<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.5 (Python 3.11.10 on linux)" generated="2026-10-20T23:11:07.655938" rpa="false" schemaversion="5">
<suite id="s1" name="openflowplugin-flow-services.txt">
<suite id="s1-s1" name="MD SAL NSF OF10" source="/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/MD_SAL_NSF_OF10">
<kw name="Start Mininet" owner="Utils" type="SETUP">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:11:08.041884" level="INFO">Start the test on the base edition</msg>
<arg>Start the test on the base edition</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:11:08.041606" elapsed="0.000345"/>
</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 or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:08.044217" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:11:08.043984" elapsed="0.000296"/>
</branch>
<status status="PASS" start="2026-10-20T23:11:08.043866" elapsed="0.000458"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:11:08.044719" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-10-20T23:11:08.044524" elapsed="0.000337"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:11:08.045361" level="INFO">Attempting to execute command "sudo mn -c" on remote system "10.30.170.219" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:11:08.045036" elapsed="0.000372"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:11:08.045922" 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-10-20T23:11:08.045579" elapsed="0.000370"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-20T23:11:08.046857" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:11:08.046935" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-20T23:11:08.046436" 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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:11:08.047100" elapsed="0.000357"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:11:08.048219" level="INFO">Logging into '10.30.170.219:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:11:08.555502" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Tue Oct 20 23:10:20 UTC 2026

  System load:  0.13               Processes:             112
  Usage of /:   19.8% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.219
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

5 updates can be applied immediately.
To see these additional updates run: apt list --upgradable

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


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


[?2004h[jenkins@releng-34016-79-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-10-20T23:11:08.047968" elapsed="0.507660"/>
</kw>
<msg time="2026-10-20T23:11:08.555704" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:11:08.047613" elapsed="0.508172"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-10-20T23:11:08.046131" elapsed="0.509754"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:11:08.556291" level="INFO">Executing command 'sudo mn -c'.</msg>
<msg time="2026-10-20T23:11:09.754668" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:11:09.755062" level="INFO">${stdout} = </msg>
<msg time="2026-10-20T23:11:09.755160" 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-10-20T23:11:08.556095" elapsed="1.199119"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:11:09.755691" elapsed="0.000581"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:11:09.757352" 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-10-20T23:11:09.756738" 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-10-20T23:11:09.758034" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:11:09.757773" elapsed="0.000370"/>
</branch>
<status status="PASS" start="2026-10-20T23:11:09.757722" 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-10-20T23:11:09.758538" elapsed="0.000092"/>
</return>
<status status="PASS" start="2026-10-20T23:11:09.758342" elapsed="0.000363"/>
</branch>
<status status="PASS" start="2026-10-20T23:11:09.758276" elapsed="0.000484"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:11:09.758836" 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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:11:09.760267" elapsed="0.000904"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-20T23:11:09.761555" elapsed="0.000364"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:11:09.762188" 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-10-20T23:11:09.759491" elapsed="0.003039"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-10-20T23:11:08.043456" elapsed="1.719283"/>
</kw>
<msg time="2026-10-20T23:11:09.762850" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:11:08.042796" elapsed="1.720169"/>
</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-10-20T23:11:08.042393" elapsed="1.720731"/>
</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 or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:09.766925" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:11:09.766423" elapsed="0.000620"/>
</branch>
<status status="PASS" start="2026-10-20T23:11:09.766379" elapsed="0.000728"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:11:09.767846" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-10-20T23:11:09.767523" elapsed="0.000597"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:11:09.769181" 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.219" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:11:09.768508" elapsed="0.000769"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:11:09.770387" level="INFO">${conn_id} = 3</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-20T23:11:09.769659" elapsed="0.000783"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-20T23:11:09.772073" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:11:09.772240" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-20T23:11:09.771483" elapsed="0.000806"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:11:09.772590" elapsed="0.000671"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:11:09.775111" level="INFO">Logging into '10.30.170.219:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:11:10.198565" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Tue Oct 20 23:10:20 UTC 2026

  System load:  0.13               Processes:             112
  Usage of /:   19.8% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.219
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

5 updates can be applied immediately.
To see these additional updates run: apt list --upgradable

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


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


Last login: Tue Oct 20 23:11:08 2026 from 10.30.170.114
[?2004h[jenkins@releng-34016-79-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-10-20T23:11:09.774564" elapsed="0.424178"/>
</kw>
<msg time="2026-10-20T23:11:10.198904" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:11:09.773664" elapsed="0.425330"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-10-20T23:11:09.770831" elapsed="0.428283"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:11:10.199668" 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-10-20T23:11:10.242696" level="INFO">Command exited with return code -1.</msg>
<msg time="2026-10-20T23:11:10.242863" level="INFO">${stdout} = </msg>
<msg time="2026-10-20T23:11:10.242939" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:11:10.199401" elapsed="0.043587"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:11:10.243281" elapsed="0.000543"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:11:10.244906" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:11:10.244249" 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-10-20T23:11:10.245489" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:11:10.245177" elapsed="0.000426"/>
</branch>
<status status="PASS" start="2026-10-20T23:11:10.245118" 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-10-20T23:11:10.245985" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-10-20T23:11:10.245794" elapsed="0.000320"/>
</branch>
<status status="PASS" start="2026-10-20T23:11:10.245760" elapsed="0.000406"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:11:10.246237" elapsed="0.000029"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:11:10.247717" 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-10-20T23:11:10.248802" elapsed="0.000339"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:11:10.249434" elapsed="0.000228"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-10-20T23:11:10.246919" elapsed="0.002852"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-10-20T23:11:09.765490" elapsed="0.484440"/>
</kw>
<msg time="2026-10-20T23:11:10.250039" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:11:09.764278" elapsed="0.485863"/>
</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-10-20T23:11:09.763470" elapsed="0.486833"/>
</kw>
<status status="PASS" start="2026-10-20T23:11:08.042121" elapsed="2.208333"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:11:10.251550" level="INFO">${mininet_conn_id} = 5</msg>
<var>${mininet_conn_id}</var>
<arg>${system}</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-10-20T23:11:10.250819" elapsed="0.000786"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-20T23:11:10.252759" level="INFO">${mininet_conn_id} = 5</msg>
<arg>${mininet_conn_id}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-20T23:11:10.252013" elapsed="0.000834"/>
</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-10-20T23:11:10.256249" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:11:10.256460" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-20T23:11:10.255672" elapsed="0.000839"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:11:10.256811" elapsed="0.000679"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:11:10.259282" level="INFO">Logging into '10.30.170.219:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:11:10.633416" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Tue Oct 20 23:10:20 UTC 2026

  System load:  0.13               Processes:             112
  Usage of /:   19.8% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.219
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

5 updates can be applied immediately.
To see these additional updates run: apt list --upgradable

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


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


Last login: Tue Oct 20 23:11:10 2026 from 10.30.170.114
[?2004h[jenkins@releng-34016-79-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-10-20T23:11:10.258757" elapsed="0.374804"/>
</kw>
<msg time="2026-10-20T23:11:10.633623" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:11:10.257825" elapsed="0.375867"/>
</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-10-20T23:11:10.254846" elapsed="0.378930"/>
</kw>
<msg time="2026-10-20T23:11:10.633823" 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-10-20T23:11:10.254020" elapsed="0.379849"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<doc>Call Flexible SSH Login, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-10-20T23:11:10.253224" elapsed="0.380714"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:11:10.634239" level="INFO">Executing command 'sudo ovs-vsctl set-manager ptcp:6644'.</msg>
<msg time="2026-10-20T23:11:10.657001" 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-10-20T23:11:10.634140" elapsed="0.022957"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-20T23:11:10.697160" level="INFO">sudo mn --controller=remote,ip=10.30.170.223 --topo tree,2 --switch ovsk,protocols=OpenFlow13</msg>
<arg>${start}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-10-20T23:11:10.657298" elapsed="0.039915"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-10-20T23:11:11.050583" level="INFO">[?2004l*** Creating network
*** Adding controller
Connecting to remote controller at 10.30.170.223:6653
*** 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
c0 
*** 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-10-20T23:11:10.697370" elapsed="0.353279"/>
</kw>
<doc>Basic setup/cleanup work that can be done safely before any system
is run.</doc>
<status status="PASS" start="2026-10-20T23:11:08.040204" elapsed="3.010526"/>
</kw>
<suite id="s1-s1-s1" name="010 Restconf Inventory" source="/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/MD_SAL_NSF_OF10/010_restconf_inventory.robot">
<kw name="Create Session" owner="RequestsLibrary" type="SETUP">
<msg time="2026-10-20T23:11:11.066231" level="INFO">Creating Session using : alias=session, url=http://10.30.170.223:8181, headers={'Content-Type': 'application/xml'},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x756aa70b7290&gt;, timeout=None, proxies=None, verify=False,                     debug=0 </msg>
<arg>session</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>headers=${HEADERS_XML}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-10-20T23:11:11.065963" elapsed="0.000496"/>
</kw>
<test id="s1-s1-s1-t1" name="Get list of nodes" line="30">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:11.608304" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:11:11.608586" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:11:11.608885" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:11:11.070169" elapsed="0.538775"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:11:11.609860" elapsed="0.000069"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:11:11.609141" elapsed="0.000870"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:11:11.611282" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:11:11.610518" elapsed="0.000912"/>
</kw>
<status status="PASS" start="2026-10-20T23:11:11.610092" elapsed="0.001410"/>
</branch>
<status status="PASS" start="2026-10-20T23:11:11.609086" elapsed="0.002468"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:11.612782" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:11:11.611925" elapsed="0.002733">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:11.615401" elapsed="0.000048"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:11:11.615062" elapsed="0.000539"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:11:11.614907" elapsed="0.000761"/>
</for>
<arg>${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>${node_list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:11:11.069728" elapsed="0.546240">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:13.630429" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:11:13.630567" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:11:13.630793" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:11:13.622603" elapsed="0.008269"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:11:13.631716" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:11:13.631080" elapsed="0.000781"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:11:13.633108" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:11:13.632300" elapsed="0.000950"/>
</kw>
<status status="PASS" start="2026-10-20T23:11:13.631920" elapsed="0.001433"/>
</branch>
<status status="PASS" start="2026-10-20T23:11:13.631025" elapsed="0.002375"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:13.634199" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:11:13.633708" elapsed="0.001500">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:13.635897" elapsed="0.000055"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:11:13.635536" elapsed="0.000507"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:11:13.635398" elapsed="0.000706"/>
</for>
<arg>${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>${node_list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:11:13.621580" elapsed="0.014762">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:15.652804" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:11:15.652992" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:11:15.653285" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:11:15.643058" elapsed="0.010315"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:11:15.654380" elapsed="0.000073"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:11:15.653594" elapsed="0.000942"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:11:15.655785" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:11:15.655022" elapsed="0.001012"/>
</kw>
<status status="PASS" start="2026-10-20T23:11:15.654597" elapsed="0.001531"/>
</branch>
<status status="PASS" start="2026-10-20T23:11:15.653538" elapsed="0.002651"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:15.657008" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:11:15.656536" elapsed="0.001330">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:15.658613" elapsed="0.000048"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:11:15.658243" elapsed="0.000491"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:11:15.658074" elapsed="0.000723"/>
</for>
<arg>${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>${node_list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:11:15.641882" elapsed="0.017245">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:17.673411" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:11:17.673548" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:11:17.673808" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:11:17.665927" elapsed="0.007950"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:11:17.674763" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:11:17.674145" elapsed="0.000739"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:11:17.676064" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:11:17.675351" elapsed="0.000829"/>
</kw>
<status status="PASS" start="2026-10-20T23:11:17.674941" elapsed="0.001311"/>
</branch>
<status status="PASS" start="2026-10-20T23:11:17.674088" elapsed="0.002210"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:17.677072" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:11:17.676633" elapsed="0.001274">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:17.678565" elapsed="0.000047"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:11:17.678227" elapsed="0.000458"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:11:17.678084" elapsed="0.000663"/>
</for>
<arg>${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>${node_list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:11:17.664956" elapsed="0.013998">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:19.692205" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:11:19.692371" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:11:19.692595" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:11:19.684910" elapsed="0.007739"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:11:19.693559" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:11:19.692926" elapsed="0.000754"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:11:19.694838" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:11:19.694105" elapsed="0.000851"/>
</kw>
<status status="PASS" start="2026-10-20T23:11:19.693735" elapsed="0.001292"/>
</branch>
<status status="PASS" start="2026-10-20T23:11:19.692878" elapsed="0.002195"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:19.695831" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:11:19.695434" elapsed="0.001204">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:19.697246" elapsed="0.000046"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:11:19.696918" elapsed="0.000477"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:11:19.696786" elapsed="0.000669"/>
</for>
<arg>${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>${node_list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:11:19.683968" elapsed="0.013680">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:21.709898" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:11:21.710022" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:11:21.710275" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:11:21.703596" elapsed="0.006765"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:11:21.711126" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:11:21.710548" elapsed="0.000724"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:11:21.712517" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:11:21.711769" elapsed="0.000865"/>
</kw>
<status status="PASS" start="2026-10-20T23:11:21.711361" elapsed="0.001343"/>
</branch>
<status status="PASS" start="2026-10-20T23:11:21.710502" elapsed="0.002248"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:21.713484" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:11:21.713043" elapsed="0.001179">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:21.715449" elapsed="0.000053"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:11:21.714564" elapsed="0.001015"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:11:21.714435" elapsed="0.001205"/>
</for>
<arg>${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>${node_list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:11:21.702634" elapsed="0.013204">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<msg time="2026-10-20T23:11:21.716025" level="FAIL">Keyword 'Check For Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</msg>
<arg>10s</arg>
<arg>2s</arg>
<arg>Check For Elements At URI</arg>
<arg>${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>${node_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-10-20T23:11:11.066990" elapsed="10.649283">Keyword 'Check For Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<doc>Get the inventory</doc>
<status status="FAIL" start="2026-10-20T23:11:11.066532" elapsed="10.650208">Keyword 'Check For Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</test>
<test id="s1-s1-s1-t2" name="Check No Link Down" line="39">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Specific Number Of Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:21.731918" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:11:21.732031" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:11:21.732257" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:11:21.726948" elapsed="0.005399"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:11:21.733477" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:11:21.732768" elapsed="0.000822"/>
</kw>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:21.734284" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:11:21.733900" elapsed="0.001108">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Should Contain X Times" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${element}</arg>
<arg>${expected_count}</arg>
<doc>Fails if the `container` does not contain the `item` `count` times.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:21.735421" elapsed="0.000049"/>
</kw>
<arg>${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>"link-down":false</arg>
<arg>8</arg>
<doc>A GET is made to the specified ${URI} and the specific count of a
given element is done (as supplied by ${element} and ${expected_count})</doc>
<status status="FAIL" start="2026-10-20T23:11:21.726138" elapsed="0.009531">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Specific Number Of Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:23.750218" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:11:23.750404" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:11:23.750627" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:11:23.743402" elapsed="0.007279"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:11:23.751904" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:11:23.751140" elapsed="0.000880"/>
</kw>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:23.752787" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:11:23.752381" elapsed="0.001208">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Should Contain X Times" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${element}</arg>
<arg>${expected_count}</arg>
<doc>Fails if the `container` does not contain the `item` `count` times.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:23.753956" elapsed="0.000125"/>
</kw>
<arg>${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>"link-down":false</arg>
<arg>8</arg>
<doc>A GET is made to the specified ${URI} and the specific count of a
given element is done (as supplied by ${element} and ${expected_count})</doc>
<status status="FAIL" start="2026-10-20T23:11:23.742486" elapsed="0.011805">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Specific Number Of Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:25.768717" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:11:25.768835" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:11:25.769051" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:11:25.762214" elapsed="0.006890"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:11:25.770290" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:11:25.769597" elapsed="0.000843"/>
</kw>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:25.771165" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:11:25.770781" elapsed="0.001169">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Should Contain X Times" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${element}</arg>
<arg>${expected_count}</arg>
<doc>Fails if the `container` does not contain the `item` `count` times.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:25.772358" elapsed="0.000048"/>
</kw>
<arg>${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>"link-down":false</arg>
<arg>8</arg>
<doc>A GET is made to the specified ${URI} and the specific count of a
given element is done (as supplied by ${element} and ${expected_count})</doc>
<status status="FAIL" start="2026-10-20T23:11:25.761268" elapsed="0.011359">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Specific Number Of Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:27.789303" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:11:27.789504" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:11:27.789785" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:11:27.783422" elapsed="0.006420"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:11:27.791054" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:11:27.790270" elapsed="0.000898"/>
</kw>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:27.791928" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:11:27.791516" elapsed="0.001263">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Should Contain X Times" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${element}</arg>
<arg>${expected_count}</arg>
<doc>Fails if the `container` does not contain the `item` `count` times.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:27.793145" elapsed="0.000045"/>
</kw>
<arg>${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>"link-down":false</arg>
<arg>8</arg>
<doc>A GET is made to the specified ${URI} and the specific count of a
given element is done (as supplied by ${element} and ${expected_count})</doc>
<status status="FAIL" start="2026-10-20T23:11:27.782490" elapsed="0.011073">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Specific Number Of Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:29.811229" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:11:29.811388" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:11:29.811649" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:11:29.803128" elapsed="0.008619"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:11:29.812974" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:11:29.812208" elapsed="0.000879"/>
</kw>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:29.813836" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:11:29.813432" elapsed="0.001167">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Should Contain X Times" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${element}</arg>
<arg>${expected_count}</arg>
<doc>Fails if the `container` does not contain the `item` `count` times.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:29.815083" elapsed="0.000067"/>
</kw>
<arg>${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>"link-down":false</arg>
<arg>8</arg>
<doc>A GET is made to the specified ${URI} and the specific count of a
given element is done (as supplied by ${element} and ${expected_count})</doc>
<status status="FAIL" start="2026-10-20T23:11:29.802144" elapsed="0.013321">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Specific Number Of Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:31.830468" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:11:31.830589" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:11:31.830803" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:11:31.823561" elapsed="0.007320"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:11:31.832141" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:11:31.831351" elapsed="0.000907"/>
</kw>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:31.833022" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:11:31.832609" elapsed="0.001199">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Should Contain X Times" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${element}</arg>
<arg>${expected_count}</arg>
<doc>Fails if the `container` does not contain the `item` `count` times.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:31.834195" elapsed="0.000045"/>
</kw>
<arg>${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>"link-down":false</arg>
<arg>8</arg>
<doc>A GET is made to the specified ${URI} and the specific count of a
given element is done (as supplied by ${element} and ${expected_count})</doc>
<status status="FAIL" start="2026-10-20T23:11:31.822593" elapsed="0.011882">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<msg time="2026-10-20T23:11:31.834773" level="FAIL">Keyword 'Check For Specific Number Of Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</msg>
<arg>10s</arg>
<arg>2s</arg>
<arg>Check For Specific Number Of Elements At URI</arg>
<arg>${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>"link-down":false</arg>
<arg>8</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-10-20T23:11:21.718605" elapsed="10.116385">Keyword 'Check For Specific Number Of Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:11:31.837700" 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-10-20T23:11:31.836644" elapsed="0.001116"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-10-20T23:11:31.838214" elapsed="0.000040"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:11:31.837957" elapsed="0.000389"/>
</branch>
<status status="PASS" start="2026-10-20T23:11:31.837909" elapsed="0.000491"/>
</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-10-20T23:11:31.838693" elapsed="0.000496"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-10-20T23:11:31.841750" level="FAIL">'6595' does not contain '-'</msg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="FAIL" start="2026-10-20T23:11:31.840276" elapsed="0.001626">'6595' does not contain '-'</status>
</kw>
<msg time="2026-10-20T23:11:31.842096" 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-10-20T23:11:31.839519" elapsed="0.002626"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:11:31.843192" level="INFO">${bug_url} = https://bugs.opendaylight.org/show_bug.cgi?id=6595</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-10-20T23:11:31.842512" elapsed="0.000733"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:11:31.844231" level="INFO">${msg} = This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=6595</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 variable.</doc>
<status status="PASS" start="2026-10-20T23:11:31.843571" elapsed="0.000766"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:11:31.845443" 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-10-20T23:11:31.844742" elapsed="0.000755"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-10-20T23:11:31.846498" level="INFO">Set test message to:
This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=6595

Keyword 'Check For Specific Number Of Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</msg>
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message of the current test case.</doc>
<status status="PASS" start="2026-10-20T23:11:31.845781" elapsed="0.000816"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:11:31.847544" level="INFO">This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=6595</msg>
<arg>${msg}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:11:31.847032" elapsed="0.000603"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<msg time="2026-10-20T23:11:31.848920" level="INFO">Set tag 'https://bugs.opendaylight.org/show_bug.cgi?id=6595'.</msg>
<arg>${bug_url}</arg>
<doc>Adds The given `tags` for the current test or all tests in a suite.</doc>
<status status="PASS" start="2026-10-20T23:11:31.848194" elapsed="0.000823"/>
</kw>
<status status="PASS" start="2026-10-20T23:11:31.847770" elapsed="0.001315"/>
</branch>
<status status="PASS" start="2026-10-20T23:11:31.847732" elapsed="0.001405"/>
</if>
<arg>6595</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-10-20T23:11:31.835869" elapsed="0.013366"/>
</kw>
<doc>Check there is no link down. We have 8 ports in total: s1=2, s2=3, s3=3.</doc>
<tag>https://bugs.opendaylight.org/show_bug.cgi?id=6595</tag>
<status status="FAIL" start="2026-10-20T23:11:21.717472" elapsed="10.131888">This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=6595

Keyword 'Check For Specific Number Of Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</test>
<test id="s1-s1-s1-t3" name="Get node 1 inventory" line="50">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:11:31.851835" level="INFO">${list} = ['"flow-node-inventory:flow-feature-capability-flow-stats"', '"flow-node-inventory:flow-feature-capability-table-stats"', '"flow-node-inventory:flow-feature-capability-port-stats"', '"flow-node-invent...</msg>
<var>${list}</var>
<arg>@{SW_CAPABILITIES}</arg>
<arg>${SW_VENDOR}</arg>
<arg>${SW_IPADDRESS}</arg>
<arg>${SW_HARDWARE}</arg>
<arg>openflow:1:1</arg>
<arg>openflow:1:2</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:11:31.850997" elapsed="0.000898"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:31.865254" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:11:31.865476" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:11:31.865682" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:11:31.858546" elapsed="0.007189"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:11:31.866500" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:11:31.865927" elapsed="0.000691"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:11:31.867690" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:11:31.867037" elapsed="0.000766"/>
</kw>
<status status="PASS" start="2026-10-20T23:11:31.866669" elapsed="0.001228"/>
</branch>
<status status="PASS" start="2026-10-20T23:11:31.865884" elapsed="0.002058"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:31.868626" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:11:31.868232" elapsed="0.001139">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:31.869985" elapsed="0.000045"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:11:31.869656" elapsed="0.000446"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:11:31.869523" elapsed="0.000636"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:11:31.857579" elapsed="0.012795">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:33.884182" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:11:33.884303" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:11:33.884583" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:11:33.877295" elapsed="0.007343"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:11:33.885522" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:11:33.884828" elapsed="0.000823"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:11:33.886902" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:11:33.886099" elapsed="0.000954"/>
</kw>
<status status="PASS" start="2026-10-20T23:11:33.885706" elapsed="0.001423"/>
</branch>
<status status="PASS" start="2026-10-20T23:11:33.884781" elapsed="0.002394"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:33.888000" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:11:33.887520" elapsed="0.001303">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:33.889589" elapsed="0.000048"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:11:33.889251" elapsed="0.000462"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:11:33.889108" elapsed="0.000664"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:11:33.876198" elapsed="0.013862">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:35.902528" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:11:35.902647" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:11:35.902863" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:11:35.896024" elapsed="0.006895"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:11:35.903733" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:11:35.903122" elapsed="0.000732"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:11:35.905000" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:11:35.904334" elapsed="0.000806"/>
</kw>
<status status="PASS" start="2026-10-20T23:11:35.903908" elapsed="0.001305"/>
</branch>
<status status="PASS" start="2026-10-20T23:11:35.903076" elapsed="0.002182"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:35.905967" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:11:35.905582" elapsed="0.001160">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:35.907354" elapsed="0.000047"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:11:35.907008" elapsed="0.000466"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:11:35.906885" elapsed="0.000645"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:11:35.894946" elapsed="0.012776">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:37.920724" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:11:37.920842" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:11:37.921055" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:11:37.913782" elapsed="0.007328"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:11:37.921924" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:11:37.921357" elapsed="0.000688"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:11:37.923351" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:11:37.922512" elapsed="0.000960"/>
</kw>
<status status="PASS" start="2026-10-20T23:11:37.922100" elapsed="0.001445"/>
</branch>
<status status="PASS" start="2026-10-20T23:11:37.921278" elapsed="0.002313"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:37.924300" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:11:37.923890" elapsed="0.001170">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:37.925693" elapsed="0.000044"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:11:37.925392" elapsed="0.000419"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:11:37.925240" elapsed="0.000629"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:11:37.912695" elapsed="0.013364">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:39.939774" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:11:39.939895" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:11:39.940127" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:11:39.932864" elapsed="0.007319"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:11:39.941007" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:11:39.940427" elapsed="0.000701"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:11:39.942261" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:11:39.941589" elapsed="0.000839"/>
</kw>
<status status="PASS" start="2026-10-20T23:11:39.941183" elapsed="0.001317"/>
</branch>
<status status="PASS" start="2026-10-20T23:11:39.940377" elapsed="0.002170"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:39.943233" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:11:39.942849" elapsed="0.001171">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:39.944628" elapsed="0.000046"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:11:39.944281" elapsed="0.000467"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:11:39.944163" elapsed="0.000641"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:11:39.931683" elapsed="0.013311">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:41.957641" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:11:41.957760" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:11:41.958061" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:11:41.950979" elapsed="0.007136"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:11:41.958917" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:11:41.958297" elapsed="0.000741"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:11:41.960184" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:11:41.959520" elapsed="0.000779"/>
</kw>
<status status="PASS" start="2026-10-20T23:11:41.959094" elapsed="0.001311"/>
</branch>
<status status="PASS" start="2026-10-20T23:11:41.958252" elapsed="0.002222"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:41.961158" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:11:41.960776" elapsed="0.001158">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:41.962550" elapsed="0.000047"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:11:41.962199" elapsed="0.000473"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:11:41.962080" elapsed="0.000648"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:11:41.949909" elapsed="0.013009">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<msg time="2026-10-20T23:11:41.963103" level="FAIL">Keyword 'Check For Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<arg>10s</arg>
<arg>2s</arg>
<arg>Check For Elements At URI</arg>
<arg>${RFC8040_NODES_API}/node=openflow%3A1?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-10-20T23:11:31.852283" elapsed="10.111010">Keyword 'Check For Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<doc>Get the inventory for a node</doc>
<status status="FAIL" start="2026-10-20T23:11:31.850066" elapsed="10.113605">Keyword 'Check For Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</status>
</test>
<test id="s1-s1-s1-t4" name="Get node 2 inventory" line="61">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:11:41.966138" level="INFO">${list} = ['"flow-node-inventory:flow-feature-capability-flow-stats"', '"flow-node-inventory:flow-feature-capability-table-stats"', '"flow-node-inventory:flow-feature-capability-port-stats"', '"flow-node-invent...</msg>
<var>${list}</var>
<arg>@{SW_CAPABILITIES}</arg>
<arg>${SW_VENDOR}</arg>
<arg>${SW_IPADDRESS}</arg>
<arg>${SW_HARDWARE}</arg>
<arg>openflow:2:1</arg>
<arg>openflow:2:2</arg>
<arg>openflow:2:3</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:11:41.965256" elapsed="0.000941"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:41.979746" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:11:41.979855" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:11:41.980052" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:11:41.973236" elapsed="0.006868"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:11:41.980858" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:11:41.980267" elapsed="0.000708"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:11:41.982054" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:11:41.981433" elapsed="0.000802"/>
</kw>
<status status="PASS" start="2026-10-20T23:11:41.981030" elapsed="0.001307"/>
</branch>
<status status="PASS" start="2026-10-20T23:11:41.980227" elapsed="0.002160"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:41.983067" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:11:41.982705" elapsed="0.001083">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:41.984348" elapsed="0.000047"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:11:41.984037" elapsed="0.000452"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:11:41.983925" elapsed="0.000620"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A2?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:11:41.972269" elapsed="0.012466">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:43.998236" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:11:43.998400" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:11:43.998637" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:11:43.990754" elapsed="0.007939"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:11:43.999469" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:11:43.998875" elapsed="0.000736"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:11:44.000813" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:11:44.000091" elapsed="0.000917"/>
</kw>
<status status="PASS" start="2026-10-20T23:11:43.999667" elapsed="0.001416"/>
</branch>
<status status="PASS" start="2026-10-20T23:11:43.998830" elapsed="0.002300"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:44.001872" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:11:44.001461" elapsed="0.001201">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:44.003220" elapsed="0.000044"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:11:44.002926" elapsed="0.000443"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:11:44.002808" elapsed="0.000618"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A2?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:11:43.989668" elapsed="0.013972">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:46.016300" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:11:46.016459" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:11:46.016785" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:11:46.009690" elapsed="0.007152"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:11:46.017617" elapsed="0.000079"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:11:46.017021" elapsed="0.000745"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:11:46.018891" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:11:46.018177" elapsed="0.000833"/>
</kw>
<status status="PASS" start="2026-10-20T23:11:46.017820" elapsed="0.001262"/>
</branch>
<status status="PASS" start="2026-10-20T23:11:46.016976" elapsed="0.002152"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:46.020290" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:11:46.019459" elapsed="0.001629">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:46.021712" elapsed="0.000047"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:11:46.021388" elapsed="0.000446"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:11:46.021233" elapsed="0.000658"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A2?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:11:46.008600" elapsed="0.013483">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:48.034501" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:11:48.034620" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:11:48.034850" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:11:48.028021" elapsed="0.006886"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:11:48.035682" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:11:48.035085" elapsed="0.000746"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:11:48.036967" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:11:48.036250" elapsed="0.000833"/>
</kw>
<status status="PASS" start="2026-10-20T23:11:48.035889" elapsed="0.001267"/>
</branch>
<status status="PASS" start="2026-10-20T23:11:48.035041" elapsed="0.002161"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:48.037975" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:11:48.037572" elapsed="0.001170">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:48.039366" elapsed="0.000048"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:11:48.039032" elapsed="0.000457"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:11:48.038910" elapsed="0.000635"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A2?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:11:48.026964" elapsed="0.012770">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:50.052178" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:11:50.052297" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:11:50.052582" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:11:50.045756" elapsed="0.006883"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:11:50.053468" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:11:50.052816" elapsed="0.000773"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:11:50.054722" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:11:50.054031" elapsed="0.000809"/>
</kw>
<status status="PASS" start="2026-10-20T23:11:50.053643" elapsed="0.001291"/>
</branch>
<status status="PASS" start="2026-10-20T23:11:50.052772" elapsed="0.002211"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:50.055693" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:11:50.055282" elapsed="0.001249">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:50.057113" elapsed="0.000045"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:11:50.056792" elapsed="0.000438"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:11:50.056675" elapsed="0.000611"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A2?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:11:50.044695" elapsed="0.012812">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:52.070564" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:11:52.070682" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:11:52.070911" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:11:52.064011" elapsed="0.006956"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:11:52.071763" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:11:52.071172" elapsed="0.000710"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:11:52.073011" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:11:52.072350" elapsed="0.000802"/>
</kw>
<status status="PASS" start="2026-10-20T23:11:52.071937" elapsed="0.001285"/>
</branch>
<status status="PASS" start="2026-10-20T23:11:52.071128" elapsed="0.002241"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:52.074082" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:11:52.073678" elapsed="0.001151">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:52.075434" elapsed="0.000046"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:11:52.075106" elapsed="0.000447"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:11:52.074968" elapsed="0.000642"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A2?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:11:52.062941" elapsed="0.012858">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<msg time="2026-10-20T23:11:52.075985" level="FAIL">Keyword 'Check For Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</msg>
<arg>10s</arg>
<arg>2s</arg>
<arg>Check For Elements At URI</arg>
<arg>${RFC8040_NODES_API}/node=openflow%3A2?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-10-20T23:11:41.966657" elapsed="10.109548">Keyword 'Check For Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<doc>Get the inventory for a node</doc>
<status status="FAIL" start="2026-10-20T23:11:41.964343" elapsed="10.112227">Keyword 'Check For Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</status>
</test>
<test id="s1-s1-s1-t5" name="Get node 3 inventory" line="72">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:11:52.079145" level="INFO">${list} = ['"flow-node-inventory:flow-feature-capability-flow-stats"', '"flow-node-inventory:flow-feature-capability-table-stats"', '"flow-node-inventory:flow-feature-capability-port-stats"', '"flow-node-invent...</msg>
<var>${list}</var>
<arg>@{SW_CAPABILITIES}</arg>
<arg>${SW_VENDOR}</arg>
<arg>${SW_IPADDRESS}</arg>
<arg>${SW_HARDWARE}</arg>
<arg>openflow:3:1</arg>
<arg>openflow:3:2</arg>
<arg>openflow:3:3</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:11:52.078182" elapsed="0.001029"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:52.092079" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:11:52.092192" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:11:52.092435" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:11:52.085775" elapsed="0.006721"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:11:52.093225" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:11:52.092661" elapsed="0.000725"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:11:52.094502" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:11:52.093813" elapsed="0.000806"/>
</kw>
<status status="PASS" start="2026-10-20T23:11:52.093442" elapsed="0.001248"/>
</branch>
<status status="PASS" start="2026-10-20T23:11:52.092620" elapsed="0.002115"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:52.095450" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:11:52.095030" elapsed="0.001140">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:52.096738" elapsed="0.000044"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:11:52.096455" elapsed="0.000400"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:11:52.096337" elapsed="0.000572"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A3?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:11:52.084804" elapsed="0.012309">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:54.110340" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:11:54.110467" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:11:54.110702" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:11:54.104062" elapsed="0.006693"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:11:54.111558" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:11:54.110960" elapsed="0.000719"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:11:54.112825" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:11:54.112113" elapsed="0.000854"/>
</kw>
<status status="PASS" start="2026-10-20T23:11:54.111733" elapsed="0.001307"/>
</branch>
<status status="PASS" start="2026-10-20T23:11:54.110913" elapsed="0.002173"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:54.113797" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:11:54.113413" elapsed="0.001165">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:54.115162" elapsed="0.000046"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:11:54.114840" elapsed="0.000439"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:11:54.114720" elapsed="0.000647"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A3?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:11:54.102929" elapsed="0.012632">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:56.127895" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:11:56.128014" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:11:56.128223" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:11:56.121711" elapsed="0.006567"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:11:56.129081" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:11:56.128498" elapsed="0.000703"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:11:56.130382" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:11:56.129684" elapsed="0.000816"/>
</kw>
<status status="PASS" start="2026-10-20T23:11:56.129257" elapsed="0.001418"/>
</branch>
<status status="PASS" start="2026-10-20T23:11:56.128451" elapsed="0.002272"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:56.131438" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:11:56.131022" elapsed="0.001184">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:56.132824" elapsed="0.000047"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:11:56.132504" elapsed="0.000440"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:11:56.132380" elapsed="0.000620"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A3?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:11:56.120621" elapsed="0.012571">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:58.145497" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:11:58.145615" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:11:58.145823" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:11:58.138996" elapsed="0.006882"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:11:58.146681" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:11:58.146054" elapsed="0.000750"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:11:58.147928" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:11:58.147242" elapsed="0.000801"/>
</kw>
<status status="PASS" start="2026-10-20T23:11:58.146857" elapsed="0.001257"/>
</branch>
<status status="PASS" start="2026-10-20T23:11:58.146010" elapsed="0.002150"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:58.148881" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:11:58.148506" elapsed="0.001134">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:58.150668" elapsed="0.000051"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:11:58.149896" elapsed="0.000898"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:11:58.149779" elapsed="0.001072"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A3?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:11:58.137967" elapsed="0.013074">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:00.163800" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:12:00.163945" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:12:00.164256" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:12:00.157229" elapsed="0.007114"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:12:00.165128" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:00.164534" elapsed="0.000717"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:12:00.166427" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:12:00.165697" elapsed="0.000849"/>
</kw>
<status status="PASS" start="2026-10-20T23:12:00.165336" elapsed="0.001284"/>
</branch>
<status status="PASS" start="2026-10-20T23:12:00.164486" elapsed="0.002180"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:00.167410" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:12:00.166990" elapsed="0.001190">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:00.168772" elapsed="0.000045"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:12:00.168475" elapsed="0.000417"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:12:00.168354" elapsed="0.000620"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A3?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:12:00.156113" elapsed="0.013054">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:02.182192" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:12:02.182368" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:12:02.182635" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:12:02.175643" elapsed="0.007059"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:12:02.183544" elapsed="0.000061"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:02.182899" elapsed="0.000803"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:12:02.184940" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:12:02.184156" elapsed="0.000906"/>
</kw>
<status status="PASS" start="2026-10-20T23:12:02.183762" elapsed="0.001377"/>
</branch>
<status status="PASS" start="2026-10-20T23:12:02.182850" elapsed="0.002336"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:02.185983" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:12:02.185552" elapsed="0.001326">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:02.187508" elapsed="0.000062"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:12:02.187151" elapsed="0.000523"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:12:02.187026" elapsed="0.000707"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A3?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:12:02.174435" elapsed="0.013503">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</status>
</kw>
<msg time="2026-10-20T23:12:02.188222" level="FAIL">Keyword 'Check For Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</msg>
<arg>10s</arg>
<arg>2s</arg>
<arg>Check For Elements At URI</arg>
<arg>${RFC8040_NODES_API}/node=openflow%3A3?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-10-20T23:11:52.079649" elapsed="10.108826">Keyword 'Check For Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</status>
</kw>
<doc>Get the inventory for a node</doc>
<status status="FAIL" start="2026-10-20T23:11:52.077245" elapsed="10.111622">Keyword 'Check For Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</status>
</test>
<test id="s1-s1-s1-t6" name="Link Down" line="83">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-20T23:12:02.194400" level="INFO">link s1 s2 down</msg>
<arg>link s1 s2 down</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-10-20T23:12:02.190512" elapsed="0.004008"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-10-20T23:12:02.219664" level="INFO">mininet&gt;</msg>
<arg>mininet&gt;</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-10-20T23:12:02.194898" elapsed="0.024889"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:12:02.220823" level="INFO">@{list} = [ "link-down":true ]</msg>
<var>@{list}</var>
<arg>"link-down":true</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:12:02.220100" elapsed="0.000790"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:02.230533" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:12:02.230618" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '452'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:12:02.230747" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:12:02.225283" elapsed="0.005497"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:12:02.231215" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:02.230883" elapsed="0.000405"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:12:02.231979" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:12:02.231566" elapsed="0.000485"/>
</kw>
<status status="PASS" start="2026-10-20T23:12:02.231344" elapsed="0.000751"/>
</branch>
<status status="PASS" start="2026-10-20T23:12:02.230858" elapsed="0.001265"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:02.232558" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:12:02.232328" elapsed="0.000685">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:02.233366" elapsed="0.000029"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:12:02.233171" elapsed="0.000270"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:12:02.233100" elapsed="0.000375"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/node-connector=openflow%3A1%3A1?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:12:02.224706" elapsed="0.008884">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:04.248022" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:12:04.248152" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '452'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:12:04.248551" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:12:04.240109" elapsed="0.008501"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:12:04.249433" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:04.248803" elapsed="0.000752"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:12:04.250720" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:12:04.249982" elapsed="0.000856"/>
</kw>
<status status="PASS" start="2026-10-20T23:12:04.249611" elapsed="0.001298"/>
</branch>
<status status="PASS" start="2026-10-20T23:12:04.248754" elapsed="0.002201"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:04.251694" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:12:04.251252" elapsed="0.001257">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:04.253092" elapsed="0.000046"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:12:04.252781" elapsed="0.000429"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:12:04.252655" elapsed="0.000619"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/node-connector=openflow%3A1%3A1?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:12:04.238972" elapsed="0.014609">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:06.266754" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:12:06.266920" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '452'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:12:06.267181" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:12:06.260294" elapsed="0.006945"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:12:06.268164" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:06.267462" elapsed="0.000828"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:12:06.269494" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:12:06.268757" elapsed="0.000856"/>
</kw>
<status status="PASS" start="2026-10-20T23:12:06.268380" elapsed="0.001305"/>
</branch>
<status status="PASS" start="2026-10-20T23:12:06.267414" elapsed="0.002318"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:06.271180" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:12:06.270162" elapsed="0.002054">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:06.273026" elapsed="0.000096"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:12:06.272599" elapsed="0.000623"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:12:06.272438" elapsed="0.000849"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/node-connector=openflow%3A1%3A1?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:12:06.259144" elapsed="0.014382">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:08.286684" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:12:08.286843" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '452'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:12:08.287065" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:12:08.280086" elapsed="0.007035"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:12:08.287937" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:08.287336" elapsed="0.000723"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:12:08.289204" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:12:08.288505" elapsed="0.000847"/>
</kw>
<status status="PASS" start="2026-10-20T23:12:08.288114" elapsed="0.001314"/>
</branch>
<status status="PASS" start="2026-10-20T23:12:08.287259" elapsed="0.002216"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:08.290175" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:12:08.289771" elapsed="0.001204">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:08.291574" elapsed="0.000046"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:12:08.291241" elapsed="0.000452"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:12:08.291119" elapsed="0.000630"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/node-connector=openflow%3A1%3A1?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:12:08.278957" elapsed="0.013008">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:10.304185" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:12:10.304342" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '452'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:12:10.304587" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:12:10.298054" elapsed="0.006589"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:12:10.305432" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:10.304828" elapsed="0.000757"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:12:10.306745" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:12:10.306019" elapsed="0.000933"/>
</kw>
<status status="PASS" start="2026-10-20T23:12:10.305643" elapsed="0.001384"/>
</branch>
<status status="PASS" start="2026-10-20T23:12:10.304782" elapsed="0.002292"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:10.307830" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:12:10.307412" elapsed="0.001220">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:10.309193" elapsed="0.000045"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:12:10.308895" elapsed="0.000446"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:12:10.308776" elapsed="0.000626"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/node-connector=openflow%3A1%3A1?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:12:10.296971" elapsed="0.012644">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:12.322528" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:12:12.322652" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '452'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:12:12.322885" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:12:12.316236" elapsed="0.006705"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:12:12.323742" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:12.323125" elapsed="0.000739"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:12:12.324991" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:12:12.324276" elapsed="0.000831"/>
</kw>
<status status="PASS" start="2026-10-20T23:12:12.323919" elapsed="0.001260"/>
</branch>
<status status="PASS" start="2026-10-20T23:12:12.323080" elapsed="0.002144"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:12.326009" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:12:12.325620" elapsed="0.001173">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:12.327420" elapsed="0.000047"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:12:12.327055" elapsed="0.000486"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:12:12.326936" elapsed="0.000661"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/node-connector=openflow%3A1%3A1?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:12:12.315136" elapsed="0.012650">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<msg time="2026-10-20T23:12:12.327971" level="FAIL">Keyword 'Check For Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</msg>
<arg>10s</arg>
<arg>2s</arg>
<arg>Check For Elements At URI</arg>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/node-connector=openflow%3A1%3A1?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-10-20T23:12:02.221151" elapsed="10.107012">Keyword 'Check For Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>10s</arg>
<arg>2s</arg>
<arg>Check For Elements At URI</arg>
<arg>${RFC8040_NODES_API}/node=openflow%3A2/node-connector=openflow%3A2%3A3?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:12.328618" elapsed="0.000128"/>
</kw>
<doc>Take link s1-s2 down</doc>
<status status="FAIL" start="2026-10-20T23:12:02.189471" elapsed="10.139585">Keyword 'Check For Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</status>
</test>
<test id="s1-s1-s1-t7" name="Link Up" line="101">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-20T23:12:12.334091" level="INFO">link s1 s2 up</msg>
<arg>link s1 s2 up</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-10-20T23:12:12.330672" elapsed="0.003536"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-10-20T23:12:12.364216" level="INFO">mininet&gt;</msg>
<arg>mininet&gt;</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-10-20T23:12:12.334583" elapsed="0.029737"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:12:12.364902" level="INFO">@{list} = [ "link-down":false ]</msg>
<var>@{list}</var>
<arg>"link-down":false</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:12:12.364517" elapsed="0.000419"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:12.373711" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:12:12.373782" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '452'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:12:12.373908" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:12:12.368968" elapsed="0.004973"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:12:12.374434" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:12.374045" elapsed="0.000465"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:12:12.375160" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:12:12.374772" elapsed="0.000459"/>
</kw>
<status status="PASS" start="2026-10-20T23:12:12.374543" elapsed="0.000731"/>
</branch>
<status status="PASS" start="2026-10-20T23:12:12.374019" elapsed="0.001325"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:12.375761" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:12:12.375534" elapsed="0.000668">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:12.376574" elapsed="0.000027"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:12:12.376397" elapsed="0.000249"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:12:12.376321" elapsed="0.000359"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/node-connector=openflow%3A1%3A1?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:12:12.368393" elapsed="0.008400">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:14.391813" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:12:14.391933" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '452'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:12:14.392294" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:12:14.385740" elapsed="0.006642"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:12:14.393164" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:14.392570" elapsed="0.000714"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:12:14.394459" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:12:14.393736" elapsed="0.000839"/>
</kw>
<status status="PASS" start="2026-10-20T23:12:14.393375" elapsed="0.001270"/>
</branch>
<status status="PASS" start="2026-10-20T23:12:14.392523" elapsed="0.002166"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:14.395420" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:12:14.394985" elapsed="0.001193">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:14.396766" elapsed="0.000044"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:12:14.396473" elapsed="0.000412"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:12:14.396352" elapsed="0.000589"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/node-connector=openflow%3A1%3A1?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:12:14.384661" elapsed="0.012493">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:16.409801" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:12:16.409956" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '452'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:12:16.410172" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:12:16.403186" elapsed="0.007052"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:12:16.411064" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:16.410467" elapsed="0.000720"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:12:16.412407" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:12:16.411658" elapsed="0.000872"/>
</kw>
<status status="PASS" start="2026-10-20T23:12:16.411240" elapsed="0.001364"/>
</branch>
<status status="PASS" start="2026-10-20T23:12:16.410420" elapsed="0.002229"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:16.413439" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:12:16.413006" elapsed="0.001209">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:16.414863" elapsed="0.000049"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:12:16.414537" elapsed="0.000450"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:12:16.414401" elapsed="0.000642"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/node-connector=openflow%3A1%3A1?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:12:16.402089" elapsed="0.013144">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:18.427556" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:12:18.427706" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '452'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:12:18.427919" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:12:18.421150" elapsed="0.006824"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:12:18.428760" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:18.428154" elapsed="0.000728"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:12:18.430012" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:12:18.429291" elapsed="0.000836"/>
</kw>
<status status="PASS" start="2026-10-20T23:12:18.428938" elapsed="0.001289"/>
</branch>
<status status="PASS" start="2026-10-20T23:12:18.428109" elapsed="0.002162"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:18.431243" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:12:18.430858" elapsed="0.001151">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:18.432603" elapsed="0.000066"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:12:18.432275" elapsed="0.000468"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:12:18.432156" elapsed="0.000643"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/node-connector=openflow%3A1%3A1?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:12:18.420118" elapsed="0.012869">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:20.447450" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:12:20.447582" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '452'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:12:20.447833" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:12:20.440431" elapsed="0.007461"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:12:20.448755" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:20.448094" elapsed="0.000791"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:12:20.450165" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:12:20.449435" elapsed="0.001003"/>
</kw>
<status status="PASS" start="2026-10-20T23:12:20.448944" elapsed="0.001575"/>
</branch>
<status status="PASS" start="2026-10-20T23:12:20.448045" elapsed="0.002523"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:20.451296" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:12:20.450892" elapsed="0.001251">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:20.452827" elapsed="0.000047"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:12:20.452491" elapsed="0.000463"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:12:20.452339" elapsed="0.000674"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/node-connector=openflow%3A1%3A1?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:12:20.439101" elapsed="0.014120">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:22.465937" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:12:22.466062" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '452'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:12:22.466332" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:12:22.459454" elapsed="0.006939"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:12:22.467154" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:22.466584" elapsed="0.000752"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:12:22.468477" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:12:22.467755" elapsed="0.000837"/>
</kw>
<status status="PASS" start="2026-10-20T23:12:22.467398" elapsed="0.001264"/>
</branch>
<status status="PASS" start="2026-10-20T23:12:22.466537" elapsed="0.002172"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:22.469458" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:12:22.469017" elapsed="0.001187">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:22.470825" elapsed="0.000045"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:12:22.470525" elapsed="0.000418"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:12:22.470402" elapsed="0.000597"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/node-connector=openflow%3A1%3A1?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:12:22.458332" elapsed="0.012858">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<msg time="2026-10-20T23:12:22.471430" level="FAIL">Keyword 'Check For Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</msg>
<arg>10s</arg>
<arg>2s</arg>
<arg>Check For Elements At URI</arg>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/node-connector=openflow%3A1%3A1?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-10-20T23:12:12.365162" elapsed="10.106458">Keyword 'Check For Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>10s</arg>
<arg>2s</arg>
<arg>Check For Elements At URI</arg>
<arg>${RFC8040_NODES_API}/node=openflow%3A2/node-connector=openflow%3A2%3A3?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:22.472031" elapsed="0.000129"/>
</kw>
<doc>Take link s1-s2 up</doc>
<status status="FAIL" start="2026-10-20T23:12:12.329793" elapsed="10.142730">Keyword 'Check For Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</status>
</test>
<kw name="Delete All Sessions" owner="RequestsLibrary" type="TEARDOWN">
<msg time="2026-10-20T23:12:22.474032" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects </doc>
<status status="PASS" start="2026-10-20T23:12:22.473867" elapsed="0.000312"/>
</kw>
<doc>Test suite for RESTCONF inventory</doc>
<status status="FAIL" start="2026-10-20T23:11:11.050810" elapsed="71.423465"/>
</suite>
<suite id="s1-s1-s2" name="020 Restconf Topology" source="/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/MD_SAL_NSF_OF10/020_restconf_topology.robot">
<kw name="Create Session" owner="RequestsLibrary" type="SETUP">
<msg time="2026-10-20T23:12:22.502941" level="INFO">Creating Session using : alias=session, url=http://10.30.170.223:8181, headers={'Content-Type': 'application/json'},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x756aa5729250&gt;, timeout=None, proxies=None, verify=False,                     debug=0 </msg>
<arg>session</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>headers=${HEADERS}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-10-20T23:12:22.502395" elapsed="0.000880"/>
</kw>
<test id="s1-s1-s2-t1" name="Get RESTCONF Topology" line="20">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:22.516703" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:12:22.516772" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:12:22.516898" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:12:22.510580" elapsed="0.006351"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:12:22.517623" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:22.517038" elapsed="0.000706"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:12:22.518832" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:12:22.518150" elapsed="0.000795"/>
</kw>
<status status="PASS" start="2026-10-20T23:12:22.517799" elapsed="0.001217"/>
</branch>
<status status="PASS" start="2026-10-20T23:12:22.517010" elapsed="0.002051"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:22.519770" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:12:22.519404" elapsed="0.001107">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:22.521053" elapsed="0.000044"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:12:22.520767" elapsed="0.000401"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:12:22.520652" elapsed="0.000593"/>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${node_list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:12:22.509911" elapsed="0.011550">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:24.534219" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:12:24.534382" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:12:24.534704" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:12:24.527759" elapsed="0.007004"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:12:24.535629" elapsed="0.000058"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:24.534977" elapsed="0.000780"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:12:24.536987" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:12:24.536244" elapsed="0.000890"/>
</kw>
<status status="PASS" start="2026-10-20T23:12:24.535817" elapsed="0.001411"/>
</branch>
<status status="PASS" start="2026-10-20T23:12:24.534912" elapsed="0.002386"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:24.538079" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:12:24.537655" elapsed="0.001224">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:24.539533" elapsed="0.000065"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:12:24.539174" elapsed="0.000519"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:12:24.539047" elapsed="0.000705"/>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${node_list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:12:24.526781" elapsed="0.013171">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:26.553007" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:12:26.553127" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:12:26.553380" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:12:26.546674" elapsed="0.006765"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:12:26.554268" elapsed="0.000088"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:26.553630" elapsed="0.000797"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:12:26.555577" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:12:26.554844" elapsed="0.000849"/>
</kw>
<status status="PASS" start="2026-10-20T23:12:26.554483" elapsed="0.001281"/>
</branch>
<status status="PASS" start="2026-10-20T23:12:26.553583" elapsed="0.002228"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:26.557013" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:12:26.556134" elapsed="0.001660">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:26.558474" elapsed="0.000046"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:12:26.558118" elapsed="0.000475"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:12:26.557980" elapsed="0.000671"/>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${node_list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:12:26.545666" elapsed="0.013339">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:28.570981" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:12:28.571209" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:12:28.571471" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:12:28.564870" elapsed="0.006656"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:12:28.572301" elapsed="0.000088"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:28.571734" elapsed="0.000724"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:12:28.573599" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:12:28.572900" elapsed="0.000840"/>
</kw>
<status status="PASS" start="2026-10-20T23:12:28.572513" elapsed="0.001298"/>
</branch>
<status status="PASS" start="2026-10-20T23:12:28.571666" elapsed="0.002189"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:28.574572" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:12:28.574154" elapsed="0.001214">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:28.575959" elapsed="0.000046"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:12:28.575633" elapsed="0.000443"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:12:28.575514" elapsed="0.000619"/>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${node_list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:12:28.563909" elapsed="0.012447">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:30.589200" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:12:30.589366" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:12:30.589638" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:12:30.582536" elapsed="0.007164"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:12:30.590629" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:30.589922" elapsed="0.000833"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:12:30.592068" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:12:30.591226" elapsed="0.000960"/>
</kw>
<status status="PASS" start="2026-10-20T23:12:30.590819" elapsed="0.001440"/>
</branch>
<status status="PASS" start="2026-10-20T23:12:30.589868" elapsed="0.002437"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:30.593100" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:12:30.592676" elapsed="0.001269">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:30.594605" elapsed="0.000049"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:12:30.594240" elapsed="0.000584"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:12:30.594113" elapsed="0.000773"/>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${node_list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:12:30.581443" elapsed="0.013668">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:32.608420" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:12:32.608550" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:12:32.608789" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:12:32.601678" elapsed="0.007167"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:12:32.609692" elapsed="0.000060"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:32.609033" elapsed="0.000790"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:12:32.611017" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:12:32.610243" elapsed="0.000894"/>
</kw>
<status status="PASS" start="2026-10-20T23:12:32.609882" elapsed="0.001329"/>
</branch>
<status status="PASS" start="2026-10-20T23:12:32.608985" elapsed="0.002272"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:32.612047" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:12:32.611649" elapsed="0.001241">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:32.613518" elapsed="0.000051"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:12:32.613159" elapsed="0.000503"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:12:32.613037" elapsed="0.000684"/>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${node_list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:12:32.600689" elapsed="0.013228">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<msg time="2026-10-20T23:12:32.614107" level="FAIL">Keyword 'Check For Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</msg>
<arg>10s</arg>
<arg>2s</arg>
<arg>Check For Elements At URI</arg>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${node_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-10-20T23:12:22.504529" elapsed="10.109772">Keyword 'Check For Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:32.614708" elapsed="0.000049"/>
</kw>
<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-10-20T23:12:32.615145" elapsed="0.000042"/>
</kw>
<doc>Get RESTCONF Topology and validate the result.</doc>
<status status="FAIL" start="2026-10-20T23:12:22.503471" elapsed="10.112076">Keyword 'Check For Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</test>
<test id="s1-s1-s2-t2" name="List all the links" line="31">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:12:32.618111" level="INFO">${body1} = {'dest-node': 'openflow:1', 'dest-tp': 'openflow:1:2'}</msg>
<var>${body1}</var>
<arg>dest-node=openflow:1</arg>
<arg>dest-tp=openflow:1:2</arg>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:12:32.617299" elapsed="0.000873"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:12:32.619348" level="INFO">${body2} = {'source-node': 'openflow:3', 'source-tp': 'openflow:3:3'}</msg>
<var>${body2}</var>
<arg>source-node=openflow:3</arg>
<arg>source-tp=openflow:3:3</arg>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:12:32.618613" elapsed="0.000818"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:12:32.620701" level="INFO">${link2} = {'link-id': 'openflow:3:3', 'destination': {'dest-node': 'openflow:1', 'dest-tp': 'openflow:1:2'}, 'source': {'source-node': 'openflow:3', 'source-tp': 'openflow:3:3'}}</msg>
<var>${link2}</var>
<arg>link-id=openflow:3:3</arg>
<arg>destination=${body1}</arg>
<arg>source=${body2}</arg>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:12:32.619809" elapsed="0.001049"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-20T23:12:32.622028" level="INFO">${link2} = {'link-id': 'openflow:3:3', 'destination': {'dest-node': 'openflow:1', 'dest-tp': 'openflow:1:2'}, 'source': {'source-node': 'openflow:3', 'source-tp': 'openflow:3:3'}}</msg>
<arg>${link2}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-20T23:12:32.621278" elapsed="0.000847"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:12:32.623237" level="INFO">${body1} = {'dest-node': 'openflow:1', 'dest-tp': 'openflow:1:1'}</msg>
<var>${body1}</var>
<arg>dest-node=openflow:1</arg>
<arg>dest-tp=openflow:1:1</arg>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:12:32.622542" elapsed="0.000754"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:12:32.624498" level="INFO">${body2} = {'source-node': 'openflow:2', 'source-tp': 'openflow:2:3'}</msg>
<var>${body2}</var>
<arg>source-node=openflow:2</arg>
<arg>source-tp=openflow:2:3</arg>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:12:32.623731" elapsed="0.000832"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:12:32.625842" level="INFO">${link1} = {'link-id': 'openflow:2:3', 'destination': {'dest-node': 'openflow:1', 'dest-tp': 'openflow:1:1'}, 'source': {'source-node': 'openflow:2', 'source-tp': 'openflow:2:3'}}</msg>
<var>${link1}</var>
<arg>link-id=openflow:2:3</arg>
<arg>destination=${body1}</arg>
<arg>source=${body2}</arg>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:12:32.624932" elapsed="0.000970"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-20T23:12:32.627014" level="INFO">${link1} = {'link-id': 'openflow:2:3', 'destination': {'dest-node': 'openflow:1', 'dest-tp': 'openflow:1:1'}, 'source': {'source-node': 'openflow:2', 'source-tp': 'openflow:2:3'}}</msg>
<arg>${link1}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-20T23:12:32.626349" elapsed="0.000771"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:12:32.628238" level="INFO">${body1} = {'dest-node': 'openflow:3', 'dest-tp': 'openflow:3:3'}</msg>
<var>${body1}</var>
<arg>dest-node=openflow:3</arg>
<arg>dest-tp=openflow:3:3</arg>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:12:32.627549" elapsed="0.000747"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:12:32.629576" level="INFO">${body2} = {'source-node': 'openflow:1', 'source-tp': 'openflow:1:2'}</msg>
<var>${body2}</var>
<arg>source-node=openflow:1</arg>
<arg>source-tp=openflow:1:2</arg>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:12:32.628726" elapsed="0.000912"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:12:32.630890" level="INFO">${link4} = {'link-id': 'openflow:1:2', 'destination': {'dest-node': 'openflow:3', 'dest-tp': 'openflow:3:3'}, 'source': {'source-node': 'openflow:1', 'source-tp': 'openflow:1:2'}}</msg>
<var>${link4}</var>
<arg>link-id=openflow:1:2</arg>
<arg>destination=${body1}</arg>
<arg>source=${body2}</arg>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:12:32.630009" elapsed="0.000943"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-20T23:12:32.632067" level="INFO">${link4} = {'link-id': 'openflow:1:2', 'destination': {'dest-node': 'openflow:3', 'dest-tp': 'openflow:3:3'}, 'source': {'source-node': 'openflow:1', 'source-tp': 'openflow:1:2'}}</msg>
<arg>${link4}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-20T23:12:32.631418" elapsed="0.000740"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:12:32.633254" level="INFO">${body1} = {'dest-node': 'openflow:2', 'dest-tp': 'openflow:2:3'}</msg>
<var>${body1}</var>
<arg>dest-node=openflow:2</arg>
<arg>dest-tp=openflow:2:3</arg>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:12:32.632599" elapsed="0.000746"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:12:32.634483" level="INFO">${body2} = {'source-node': 'openflow:1', 'source-tp': 'openflow:1:1'}</msg>
<var>${body2}</var>
<arg>source-node=openflow:1</arg>
<arg>source-tp=openflow:1:1</arg>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:12:32.633752" elapsed="0.000790"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:12:32.635778" level="INFO">${link3} = {'link-id': 'openflow:1:1', 'destination': {'dest-node': 'openflow:2', 'dest-tp': 'openflow:2:3'}, 'source': {'source-node': 'openflow:1', 'source-tp': 'openflow:1:1'}}</msg>
<var>${link3}</var>
<arg>link-id=openflow:1:1</arg>
<arg>destination=${body1}</arg>
<arg>source=${body2}</arg>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:12:32.634908" elapsed="0.000926"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-20T23:12:32.636943" level="INFO">${link3} = {'link-id': 'openflow:1:1', 'destination': {'dest-node': 'openflow:2', 'dest-tp': 'openflow:2:3'}, 'source': {'source-node': 'openflow:1', 'source-tp': 'openflow:1:1'}}</msg>
<arg>${link3}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-20T23:12:32.636224" elapsed="0.000808"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:12:32.638138" level="INFO">${links} = [{'link-id': 'openflow:2:3', 'destination': {'dest-node': 'openflow:1', 'dest-tp': 'openflow:1:1'}, 'source': {'source-node': 'openflow:2', 'source-tp': 'openflow:2:3'}}, {'link-id': 'openflow:3:3', '...</msg>
<var>${links}</var>
<arg>${link1}</arg>
<arg>${link2}</arg>
<arg>${link3}</arg>
<arg>${link4}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:12:32.637380" elapsed="0.000817"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:32.645650" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:12:32.645720" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:12:32.645900" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:12:32.640567" elapsed="0.006148">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:12:32.647193" elapsed="0.000051"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:12:32.647691" elapsed="0.000052"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:32.648150" elapsed="0.000044"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:32.648559" elapsed="0.000045"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:32.648927" elapsed="0.000052"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:32.649284" elapsed="0.000072"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:32.649887" elapsed="0.000049"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:12:32.649614" elapsed="0.000409"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:12:32.649494" elapsed="0.000589"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:12:32.639872" elapsed="0.010404">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:34.658908" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:12:34.659071" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:12:34.659426" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:12:34.652176" elapsed="0.008199">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:12:34.660928" elapsed="0.000064"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:12:34.661527" elapsed="0.000054"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:34.661968" elapsed="0.000043"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:34.662354" elapsed="0.000045"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:34.662710" elapsed="0.000043"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:34.663053" elapsed="0.000041"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:34.663772" elapsed="0.000061"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:12:34.663386" elapsed="0.000526"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:12:34.663204" elapsed="0.000768"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:12:34.651341" elapsed="0.012863">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:36.671951" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:12:36.672101" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:12:36.672464" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:12:36.665923" elapsed="0.007469">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:12:36.673869" elapsed="0.000048"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:12:36.674347" elapsed="0.000054"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:36.674784" elapsed="0.000043"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:36.675139" elapsed="0.000044"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:36.675521" elapsed="0.000043"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:36.675860" elapsed="0.000040"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:36.676458" elapsed="0.000046"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:12:36.676153" elapsed="0.000422"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:12:36.676014" elapsed="0.000617"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:12:36.665059" elapsed="0.011765">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:38.685361" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:12:38.685499" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:12:38.685728" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:12:38.678514" elapsed="0.008286">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:12:38.687348" elapsed="0.000050"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:12:38.687777" elapsed="0.000050"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:38.688234" elapsed="0.000044"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:38.688605" elapsed="0.000043"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:38.688976" elapsed="0.000043"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:38.689344" elapsed="0.000042"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:38.689896" elapsed="0.000043"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:12:38.689623" elapsed="0.000421"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:12:38.689501" elapsed="0.000603"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:12:38.677658" elapsed="0.012643">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:40.697903" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:12:40.698027" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:12:40.698382" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:12:40.692021" elapsed="0.007249">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:12:40.699782" elapsed="0.000071"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:12:40.700740" elapsed="0.000054"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:40.701212" elapsed="0.000043"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:40.701581" elapsed="0.000042"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:40.701954" elapsed="0.000041"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:40.702294" elapsed="0.000069"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:40.702889" elapsed="0.000046"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:12:40.702593" elapsed="0.000413"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:12:40.702475" elapsed="0.000588"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:12:40.691146" elapsed="0.012111">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:42.711407" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:12:42.711533" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:12:42.711784" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:12:42.705009" elapsed="0.007744">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:12:42.713266" elapsed="0.000082"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:12:42.713768" elapsed="0.000056"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:42.714240" elapsed="0.000046"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:42.714624" elapsed="0.000043"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:42.715012" elapsed="0.000043"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:42.715413" elapsed="0.000045"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:42.716012" elapsed="0.000046"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:12:42.715725" elapsed="0.000403"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:12:42.715573" elapsed="0.000630"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:12:42.704122" elapsed="0.012319">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<msg time="2026-10-20T23:12:42.716623" level="FAIL">Keyword 'Verify Links' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<arg>10s</arg>
<arg>2s</arg>
<arg>Verify Links</arg>
<arg>${links}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-10-20T23:12:32.638700" elapsed="10.078147">Keyword 'Verify Links' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<doc>List all the links in the topology.</doc>
<status status="FAIL" start="2026-10-20T23:12:32.616270" elapsed="10.100896">Keyword 'Verify Links' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</test>
<test id="s1-s1-s2-t3" name="Link Down" line="52">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-20T23:12:42.722876" level="INFO">link s1 s2 down</msg>
<arg>link s1 s2 down</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-10-20T23:12:42.718585" elapsed="0.004418"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-10-20T23:12:42.747968" level="INFO">mininet&gt;</msg>
<arg>mininet&gt;</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-10-20T23:12:42.723355" elapsed="0.024731"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:12:42.749187" level="INFO">${links} = [{'link-id': 'openflow:3:3', 'destination': {'dest-node': 'openflow:1', 'dest-tp': 'openflow:1:2'}, 'source': {'source-node': 'openflow:3', 'source-tp': 'openflow:3:3'}}, {'link-id': 'openflow:1:2', '...</msg>
<var>${links}</var>
<arg>${link2}</arg>
<arg>${link4}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:12:42.748420" elapsed="0.000825"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:42.756397" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:12:42.756469" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:12:42.756595" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:12:42.751547" elapsed="0.005590">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:12:42.757471" elapsed="0.000030"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:12:42.757744" elapsed="0.000032"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:42.758012" elapsed="0.000025"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:42.758218" elapsed="0.000040"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:42.758472" elapsed="0.000027"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:42.758683" elapsed="0.000039"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:42.759033" elapsed="0.000044"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:12:42.758864" elapsed="0.000257"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:12:42.758791" elapsed="0.000365"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:12:42.750822" elapsed="0.008451">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:44.768140" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:12:44.768269" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:12:44.768555" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:12:44.760997" elapsed="0.008542">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:12:44.770060" elapsed="0.000151"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:12:44.770675" elapsed="0.000054"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:44.771134" elapsed="0.000049"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:44.771520" elapsed="0.000043"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:44.771899" elapsed="0.000040"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:44.772260" elapsed="0.000043"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:44.772890" elapsed="0.000045"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:12:44.772576" elapsed="0.000431"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:12:44.772454" elapsed="0.000611"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:12:44.760089" elapsed="0.013191">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:46.781405" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:12:46.781553" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:12:46.781780" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:12:46.775027" elapsed="0.007674">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:12:46.783180" elapsed="0.000048"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:12:46.783654" elapsed="0.000051"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:46.784085" elapsed="0.000042"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:46.784448" elapsed="0.000064"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:46.784825" elapsed="0.000042"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:46.785161" elapsed="0.000041"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:46.785778" elapsed="0.000043"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:12:46.785504" elapsed="0.000386"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:12:46.785363" elapsed="0.000583"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:12:46.774115" elapsed="0.012026">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:48.794094" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:12:48.794218" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:12:48.794623" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:12:48.787840" elapsed="0.007713">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:12:48.796027" elapsed="0.000048"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:12:48.796501" elapsed="0.000052"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:48.796936" elapsed="0.000043"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:48.797273" elapsed="0.000080"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:48.797688" elapsed="0.000042"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:48.798027" elapsed="0.000041"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:48.798628" elapsed="0.000045"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:12:48.798296" elapsed="0.000447"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:12:48.798178" elapsed="0.000622"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:12:48.786945" elapsed="0.012047">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:50.807055" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:12:50.807182" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:12:50.807544" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:12:50.800759" elapsed="0.008186">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:12:50.809484" elapsed="0.000052"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:12:50.809913" elapsed="0.000051"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:50.810388" elapsed="0.000045"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:50.810724" elapsed="0.000041"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:50.811066" elapsed="0.000040"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:50.811446" elapsed="0.000042"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:50.811987" elapsed="0.000042"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:12:50.811718" elapsed="0.000379"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:12:50.811599" elapsed="0.000554"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:12:50.799894" elapsed="0.012504">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:52.820643" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:12:52.820769" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:12:52.821114" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:12:52.814186" elapsed="0.007971">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:12:52.822757" elapsed="0.000052"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:12:52.823248" elapsed="0.000053"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:52.823719" elapsed="0.000043"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:52.824055" elapsed="0.000042"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:52.824454" elapsed="0.000042"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:52.824792" elapsed="0.000040"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:52.825381" elapsed="0.000045"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:12:52.825062" elapsed="0.000435"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:12:52.824943" elapsed="0.000611"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:12:52.813235" elapsed="0.012515">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:54.833867" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:12:54.833995" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:12:54.834253" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:12:54.827491" elapsed="0.007674">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:12:54.835692" elapsed="0.000051"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:12:54.836143" elapsed="0.000052"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:54.836605" elapsed="0.000043"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:54.836939" elapsed="0.000042"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:54.837344" elapsed="0.000044"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:54.837683" elapsed="0.000040"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:54.838265" elapsed="0.000073"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:12:54.837963" elapsed="0.000450"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:12:54.837844" elapsed="0.000626"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:12:54.826607" elapsed="0.012056">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:56.846808" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:12:56.846935" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:12:56.847292" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:12:56.840429" elapsed="0.007808">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:12:56.848754" elapsed="0.000049"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:12:56.849209" elapsed="0.000052"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:56.849684" elapsed="0.000042"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:56.850502" elapsed="0.000046"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:56.850869" elapsed="0.000041"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:56.851245" elapsed="0.000041"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:56.851824" elapsed="0.000043"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:12:56.851546" elapsed="0.000391"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:12:56.851426" elapsed="0.000567"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:12:56.839541" elapsed="0.012670">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:58.860219" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:12:58.860387" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:12:58.860613" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:12:58.853882" elapsed="0.007666">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:12:58.862060" elapsed="0.000049"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:12:58.862515" elapsed="0.000052"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:58.862947" elapsed="0.000065"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:58.863331" elapsed="0.000043"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:58.863685" elapsed="0.000041"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:58.864042" elapsed="0.000041"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:58.864620" elapsed="0.000044"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:12:58.864344" elapsed="0.000389"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:12:58.864195" elapsed="0.000595"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:12:58.853007" elapsed="0.012000">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:13:00.875639" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:13:00.875764" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:13:00.876100" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:13:00.867016" elapsed="0.009783">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:13:00.877395" elapsed="0.000065"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:13:00.877899" elapsed="0.000047"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:00.878215" elapsed="0.000027"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:00.878463" elapsed="0.000029"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:00.878703" elapsed="0.000026"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:00.878941" elapsed="0.000027"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:00.879396" elapsed="0.000032"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:13:00.879183" elapsed="0.000291"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:13:00.879064" elapsed="0.000453"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:13:00.866003" elapsed="0.013692">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:13:02.887916" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:13:02.888052" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:13:02.888339" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:13:02.881437" elapsed="0.007836">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:13:02.889883" elapsed="0.000054"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:13:02.890360" elapsed="0.000054"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:02.890812" elapsed="0.000062"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:02.891164" elapsed="0.000043"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:02.891539" elapsed="0.000041"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:02.891894" elapsed="0.000041"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:02.892467" elapsed="0.000045"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:13:02.892168" elapsed="0.000424"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:13:02.892047" elapsed="0.000604"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:13:02.880555" elapsed="0.012318">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:13:04.902174" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:13:04.902352" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:13:04.902779" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:13:04.895613" elapsed="0.008195">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:13:04.904352" elapsed="0.000050"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:13:04.904849" elapsed="0.000062"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:04.905387" elapsed="0.000046"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:04.905744" elapsed="0.000064"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:04.906164" elapsed="0.000042"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:04.906532" elapsed="0.000042"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:04.907124" elapsed="0.000046"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:13:04.906845" elapsed="0.000394"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:13:04.906694" elapsed="0.000603"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:13:04.894571" elapsed="0.012960">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:13:06.915846" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:13:06.915977" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:13:06.916210" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:13:06.909386" elapsed="0.007763">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:13:06.917723" elapsed="0.000050"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:13:06.918158" elapsed="0.000050"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:06.918618" elapsed="0.000042"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:06.918972" elapsed="0.000041"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:06.919350" elapsed="0.000043"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:06.919694" elapsed="0.000063"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:06.920285" elapsed="0.000074"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:13:06.919998" elapsed="0.000433"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:13:06.919872" elapsed="0.000617"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:13:06.908457" elapsed="0.012231">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:13:08.929012" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:13:08.929142" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:13:08.929507" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:13:08.922488" elapsed="0.008011">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:13:08.931029" elapsed="0.000049"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:13:08.931483" elapsed="0.000050"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:08.931944" elapsed="0.000043"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:08.932282" elapsed="0.000070"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:08.932687" elapsed="0.000042"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:08.933029" elapsed="0.000039"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:08.933610" elapsed="0.000061"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:13:08.933304" elapsed="0.000437"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:13:08.933179" elapsed="0.000620"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:13:08.921542" elapsed="0.012457">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:13:10.944923" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:13:10.945048" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:13:10.945290" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:13:10.935768" elapsed="0.010469">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:13:10.946765" elapsed="0.000050"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:13:10.947186" elapsed="0.000050"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:10.947668" elapsed="0.000046"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:10.948012" elapsed="0.000042"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:10.948421" elapsed="0.000046"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:10.948782" elapsed="0.000041"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:10.949352" elapsed="0.000044"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:13:10.949049" elapsed="0.000416"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:13:10.948932" elapsed="0.000590"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:13:10.934863" elapsed="0.014873">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:13:12.957838" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:13:12.957966" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:13:12.958295" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:13:12.951384" elapsed="0.007843">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:13:12.959927" elapsed="0.000052"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:13:12.960408" elapsed="0.000050"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:12.960860" elapsed="0.000041"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:12.961191" elapsed="0.000040"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:12.961588" elapsed="0.000042"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:12.961951" elapsed="0.000041"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:12.962530" elapsed="0.000063"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:13:12.962228" elapsed="0.000434"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:13:12.962105" elapsed="0.000615"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:13:12.950508" elapsed="0.012410">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:13:14.971021" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:13:14.971149" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:13:14.971409" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:13:14.964750" elapsed="0.007603">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:13:14.972867" elapsed="0.000049"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:13:14.973300" elapsed="0.000082"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:14.973793" elapsed="0.000044"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:14.974135" elapsed="0.000042"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:14.974552" elapsed="0.000043"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:14.974898" elapsed="0.000040"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:14.975489" elapsed="0.000064"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:13:14.975177" elapsed="0.000450"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:13:14.975051" elapsed="0.000635"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:13:14.963811" elapsed="0.012072">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:13:16.983991" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:13:16.984120" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:13:16.984502" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:13:16.977618" elapsed="0.007802">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:13:16.985929" elapsed="0.000048"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:13:16.986380" elapsed="0.000051"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:16.986843" elapsed="0.000040"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:16.987177" elapsed="0.000040"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:16.987574" elapsed="0.000042"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:16.987941" elapsed="0.000041"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:16.989096" elapsed="0.000050"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:13:16.988740" elapsed="0.000481"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:13:16.988094" elapsed="0.001185"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:13:16.976744" elapsed="0.012780">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:13:18.997506" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:13:18.997641" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:13:18.997872" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:13:18.991198" elapsed="0.007608">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:13:18.999344" elapsed="0.000051"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:13:18.999811" elapsed="0.000051"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:19.000244" elapsed="0.000138"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:19.000723" elapsed="0.000043"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:19.001073" elapsed="0.000040"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:19.001437" elapsed="0.000060"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:19.002016" elapsed="0.000041"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:13:19.001742" elapsed="0.000384"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:13:19.001614" elapsed="0.000569"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:13:18.990358" elapsed="0.012056">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:13:21.010490" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:13:21.010619" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:13:21.010939" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:13:21.004111" elapsed="0.007749">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:13:21.012379" elapsed="0.000070"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:13:21.012834" elapsed="0.000051"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:21.013266" elapsed="0.000070"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:21.013657" elapsed="0.000042"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:21.014009" elapsed="0.000041"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:21.014372" elapsed="0.000062"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:21.014941" elapsed="0.000044"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:13:21.014670" elapsed="0.000383"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:13:21.014549" elapsed="0.000561"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:13:21.003217" elapsed="0.012119">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:13:23.023793" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:13:23.023924" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:13:23.024153" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:13:23.017053" elapsed="0.008046">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:13:23.025644" elapsed="0.000050"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:13:23.026067" elapsed="0.000050"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:23.026545" elapsed="0.000045"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:23.026885" elapsed="0.000041"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:23.027234" elapsed="0.000040"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:23.027618" elapsed="0.000042"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:23.028175" elapsed="0.000042"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:13:23.027899" elapsed="0.000387"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:13:23.027775" elapsed="0.000599"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:13:23.016153" elapsed="0.012448">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:13:25.038011" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:13:25.038150" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:13:25.038606" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:13:25.031360" elapsed="0.008300">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:13:25.040167" elapsed="0.000048"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:13:25.040686" elapsed="0.000054"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:25.041128" elapsed="0.000042"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:25.041596" elapsed="0.000048"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:25.041967" elapsed="0.000041"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:25.042339" elapsed="0.000066"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:25.042932" elapsed="0.000046"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:13:25.042652" elapsed="0.000396"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:13:25.042524" elapsed="0.000580"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:13:25.029653" elapsed="0.013681">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:13:27.052154" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:13:27.052370" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:13:27.052608" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:13:27.045419" elapsed="0.008142">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:13:27.054052" elapsed="0.000048"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:13:27.054527" elapsed="0.000052"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:27.054980" elapsed="0.000046"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:27.055373" elapsed="0.000044"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:27.055729" elapsed="0.000041"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:27.056067" elapsed="0.000040"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:27.056660" elapsed="0.000044"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:13:27.056383" elapsed="0.000390"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:13:27.056216" elapsed="0.000614"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:13:27.044399" elapsed="0.012630">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:13:29.064991" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:13:29.065120" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:13:29.065546" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:13:29.058705" elapsed="0.007805">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:13:29.067004" elapsed="0.000047"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:13:29.067486" elapsed="0.000052"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:29.067926" elapsed="0.000041"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:29.068256" elapsed="0.000040"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:29.068657" elapsed="0.000041"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:29.068990" elapsed="0.000039"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:29.069589" elapsed="0.000046"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:13:29.069268" elapsed="0.000437"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:13:29.069142" elapsed="0.000620"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:13:29.057823" elapsed="0.012144">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:13:31.079368" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:13:31.079534" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:13:31.079859" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:13:31.072498" elapsed="0.009073">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:13:31.082103" elapsed="0.000050"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:13:31.082660" elapsed="0.000065"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:31.083122" elapsed="0.000044"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:31.083574" elapsed="0.000059"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:31.084003" elapsed="0.000042"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:31.084410" elapsed="0.000058"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:31.085012" elapsed="0.000044"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:13:31.084723" elapsed="0.000404"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:13:31.084592" elapsed="0.000595"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:13:31.071351" elapsed="0.014120">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:13:33.093454" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:13:33.093588" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:13:33.093921" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:13:33.087159" elapsed="0.007890">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:13:33.095765" elapsed="0.000052"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:13:33.096198" elapsed="0.000052"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:33.096679" elapsed="0.000043"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:33.097019" elapsed="0.000042"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:33.097412" elapsed="0.000043"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:33.097756" elapsed="0.000040"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:33.098294" elapsed="0.000086"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:13:33.098022" elapsed="0.000431"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:13:33.097905" elapsed="0.000604"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:13:33.086265" elapsed="0.012513">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:13:35.107478" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:13:35.107610" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:13:35.107863" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:13:35.101040" elapsed="0.007826">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:13:35.109427" elapsed="0.000052"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:13:35.109886" elapsed="0.000051"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:35.110371" elapsed="0.000046"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:35.110715" elapsed="0.000045"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:35.111091" elapsed="0.000042"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:35.111479" elapsed="0.000043"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:35.112064" elapsed="0.000047"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:13:35.111768" elapsed="0.000415"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:13:35.111639" elapsed="0.000603"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:13:35.100000" elapsed="0.012494">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:13:37.120847" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:13:37.120976" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:13:37.121346" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:13:37.114558" elapsed="0.007700">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:13:37.122797" elapsed="0.000049"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:13:37.123220" elapsed="0.000052"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:37.123703" elapsed="0.000043"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:37.124043" elapsed="0.000041"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:37.124439" elapsed="0.000042"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:37.124780" elapsed="0.000040"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:37.125836" elapsed="0.000049"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:13:37.125049" elapsed="0.000910"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:13:37.124929" elapsed="0.001088"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:13:37.113620" elapsed="0.012592">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:13:39.134239" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:13:39.134418" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:13:39.134651" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:13:39.127948" elapsed="0.007630">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:13:39.136047" elapsed="0.000047"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:13:39.136511" elapsed="0.000051"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:39.136942" elapsed="0.000043"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:39.137277" elapsed="0.000083"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:39.137670" elapsed="0.000040"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:39.138003" elapsed="0.000040"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:39.138580" elapsed="0.000045"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:13:39.138263" elapsed="0.000432"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:13:39.138148" elapsed="0.000603"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:13:39.127019" elapsed="0.011923">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:13:41.147413" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:13:41.147544" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:13:41.147862" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:13:41.141202" elapsed="0.007597">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:13:41.149283" elapsed="0.000111"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:13:41.149781" elapsed="0.000051"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:41.150218" elapsed="0.000042"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:41.150610" elapsed="0.000059"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:41.150987" elapsed="0.000040"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:41.151365" elapsed="0.000044"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:41.151918" elapsed="0.000044"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:13:41.151643" elapsed="0.000390"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:13:41.151523" elapsed="0.000566"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:13:41.140282" elapsed="0.011999">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:13:43.160181" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:13:43.160357" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:13:43.160574" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:13:43.153764" elapsed="0.007703">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:13:43.161938" elapsed="0.000048"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:13:43.162406" elapsed="0.000051"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:43.162838" elapsed="0.000041"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:43.163167" elapsed="0.000040"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:43.163576" elapsed="0.000042"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:43.163913" elapsed="0.000040"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:43.164491" elapsed="0.000045"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:13:43.164172" elapsed="0.000436"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:13:43.164059" elapsed="0.000606"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:13:43.152984" elapsed="0.011933">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<msg time="2026-10-20T23:13:43.165122" level="FAIL">Keyword 'Verify Links' failed after retrying for 1 minute. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<arg>60s</arg>
<arg>2s</arg>
<arg>Verify Links</arg>
<arg>${links}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-10-20T23:12:42.749659" elapsed="60.415715">Keyword 'Verify Links' failed after retrying for 1 minute. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Write" owner="SSHLibrary">
<arg>sh ovs-vsctl find Interface name="s1-eth1"</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:43.165716" elapsed="0.000043"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<var>${output}</var>
<arg>mininet&gt;</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:43.166140" elapsed="0.000043"/>
</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-10-20T23:13:43.166618" elapsed="0.000043"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<arg>sh ovs-vsctl find Interface name="s1-eth2"</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:43.166960" elapsed="0.000041"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<var>${output}</var>
<arg>mininet&gt;</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:43.167335" elapsed="0.000045"/>
</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-10-20T23:13:43.167766" elapsed="0.000040"/>
</kw>
<doc>Take link s1-s2 down</doc>
<status status="FAIL" start="2026-10-20T23:12:42.717761" elapsed="60.450343">Keyword 'Verify Links' failed after retrying for 1 minute. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</test>
<test id="s1-s1-s2-t4" name="Link Up" line="69">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-20T23:13:43.173774" level="INFO">link s1 s2 up</msg>
<arg>link s1 s2 up</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-10-20T23:13:43.169784" elapsed="0.004116"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-10-20T23:13:43.199780" level="INFO">mininet&gt;</msg>
<arg>mininet&gt;</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-10-20T23:13:43.174218" elapsed="0.025681"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:13:43.201076" level="INFO">${links} = [{'link-id': 'openflow:2:3', 'destination': {'dest-node': 'openflow:1', 'dest-tp': 'openflow:1:1'}, 'source': {'source-node': 'openflow:2', 'source-tp': 'openflow:2:3'}}, {'link-id': 'openflow:3:3', '...</msg>
<var>${links}</var>
<arg>${link1}</arg>
<arg>${link2}</arg>
<arg>${link3}</arg>
<arg>${link4}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:13:43.200223" elapsed="0.000911"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:13:43.207926" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:13:43.207996" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:13:43.208116" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:13:43.203265" elapsed="0.005405">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:13:43.208946" elapsed="0.000028"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:13:43.209198" elapsed="0.000030"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:43.209499" elapsed="0.000027"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:43.209706" elapsed="0.000034"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:43.209932" elapsed="0.000024"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:43.210137" elapsed="0.000024"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:43.210503" elapsed="0.000027"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:13:43.210293" elapsed="0.000280"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:13:43.210224" elapsed="0.000384"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:13:43.202644" elapsed="0.008079">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:13:45.218056" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:13:45.218179" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:13:45.218548" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:13:45.212151" elapsed="0.007292">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:13:45.219936" elapsed="0.000049"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:13:45.220417" elapsed="0.000053"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:45.220861" elapsed="0.000043"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:45.221198" elapsed="0.000043"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:45.221646" elapsed="0.000046"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:45.221995" elapsed="0.000041"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:45.222573" elapsed="0.000045"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:13:45.222259" elapsed="0.000429"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:13:45.222143" elapsed="0.000601"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:13:45.211400" elapsed="0.011536">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:13:47.230819" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:13:47.230946" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:13:47.231163" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:13:47.224636" elapsed="0.008005">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:13:47.233121" elapsed="0.000048"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:13:47.233588" elapsed="0.000051"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:47.234018" elapsed="0.000042"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:47.234397" elapsed="0.000045"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:47.234751" elapsed="0.000041"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:47.235093" elapsed="0.000040"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:47.235669" elapsed="0.000045"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:13:47.235393" elapsed="0.000391"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:13:47.235238" elapsed="0.000602"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:13:47.223799" elapsed="0.012232">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:13:49.244505" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:13:49.244630" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:13:49.244981" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:13:49.237894" elapsed="0.008000">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:13:49.246518" elapsed="0.000054"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:13:49.246956" elapsed="0.000051"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:49.247437" elapsed="0.000046"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:49.247795" elapsed="0.000048"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:49.248159" elapsed="0.000041"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:49.248544" elapsed="0.000043"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:49.249091" elapsed="0.000046"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:13:49.248816" elapsed="0.000390"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:13:49.248698" elapsed="0.000565"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:13:49.236886" elapsed="0.012623">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:13:51.257604" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:13:51.257733" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:13:51.257956" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:13:51.251191" elapsed="0.007683">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:13:51.259415" elapsed="0.000052"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:13:51.259845" elapsed="0.000051"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:51.260277" elapsed="0.000098"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:51.260678" elapsed="0.000042"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:51.261028" elapsed="0.000041"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:51.261416" elapsed="0.000043"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:51.261959" elapsed="0.000044"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:13:51.261686" elapsed="0.000386"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:13:51.261568" elapsed="0.000559"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:13:51.250303" elapsed="0.012064">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:13:53.270855" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:13:53.270982" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:13:53.271403" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:13:53.264197" elapsed="0.008167">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:13:53.272871" elapsed="0.000051"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:13:53.273302" elapsed="0.000115"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:53.273842" elapsed="0.000046"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:53.274735" elapsed="0.000051"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:53.275119" elapsed="0.000044"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:53.275552" elapsed="0.000047"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:53.276124" elapsed="0.000046"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:13:53.275842" elapsed="0.000401"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:13:53.275717" elapsed="0.000585"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:13:53.263156" elapsed="0.013416">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<msg time="2026-10-20T23:13:53.276758" level="FAIL">Keyword 'Verify Links' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<arg>10s</arg>
<arg>2s</arg>
<arg>Verify Links</arg>
<arg>${links}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-10-20T23:13:43.201569" elapsed="10.075390">Keyword 'Verify Links' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<doc>Take link s1-s2 up</doc>
<status status="FAIL" start="2026-10-20T23:13:43.168557" elapsed="10.108746">Keyword 'Verify Links' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</test>
<kw name="Delete All Sessions" owner="RequestsLibrary" type="TEARDOWN">
<msg time="2026-10-20T23:13:53.278813" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects </doc>
<status status="PASS" start="2026-10-20T23:13:53.278296" elapsed="0.000660"/>
</kw>
<doc>Test suite for RESTCONF Topology</doc>
<status status="FAIL" start="2026-10-20T23:12:22.475803" elapsed="90.803225"/>
</suite>
<suite id="s1-s1-s3" name="030 Restconf Statistics" source="/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/MD_SAL_NSF_OF10/030_restconf_statistics.robot">
<kw name="Create Session" owner="RequestsLibrary" type="SETUP">
<msg time="2026-10-20T23:13:53.310556" level="INFO">Creating Session using : alias=session, url=http://10.30.170.223:8181, headers={'Content-Type': 'application/xml'},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x756aa579aad0&gt;, timeout=None, proxies=None, verify=False,                     debug=0 </msg>
<arg>session</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>headers=${HEADERS_XML}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-10-20T23:13:53.309903" elapsed="0.000884"/>
</kw>
<test id="s1-s1-s3-t1" name="Get Stats for all nodes" line="20">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:13:53.321833" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:13:53.321904" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:13:53.322040" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:13:53.315816" elapsed="0.006269"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:13:53.322714" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:13:53.322202" elapsed="0.000633"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:13:53.323981" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:13:53.323283" elapsed="0.000938"/>
</kw>
<status status="PASS" start="2026-10-20T23:13:53.322891" elapsed="0.001479"/>
</branch>
<status status="PASS" start="2026-10-20T23:13:53.322172" elapsed="0.002252"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:13:53.325141" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:13:53.324765" elapsed="0.001139">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:53.326498" elapsed="0.000050"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:13:53.326165" elapsed="0.000457"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:13:53.326045" elapsed="0.000633"/>
</for>
<arg>${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>${node_list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:13:53.315283" elapsed="0.011583">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:13:55.339264" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:13:55.339449" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:13:55.339686" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:13:55.333108" elapsed="0.006635"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:13:55.340552" elapsed="0.000058"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:13:55.339932" elapsed="0.000748"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:13:55.341842" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:13:55.341092" elapsed="0.000869"/>
</kw>
<status status="PASS" start="2026-10-20T23:13:55.340736" elapsed="0.001297"/>
</branch>
<status status="PASS" start="2026-10-20T23:13:55.339884" elapsed="0.002195"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:13:55.342808" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:13:55.342423" elapsed="0.001176">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:55.344157" elapsed="0.000043"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:13:55.343861" elapsed="0.000411"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:13:55.343741" elapsed="0.000636"/>
</for>
<arg>${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>${node_list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:13:55.332167" elapsed="0.012405">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:13:57.356682" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:13:57.356800" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:13:57.357011" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:13:57.350472" elapsed="0.006593"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:13:57.357965" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:13:57.357392" elapsed="0.000694"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:13:57.359238" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:13:57.358565" elapsed="0.000839"/>
</kw>
<status status="PASS" start="2026-10-20T23:13:57.358142" elapsed="0.001336"/>
</branch>
<status status="PASS" start="2026-10-20T23:13:57.357296" elapsed="0.002228"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:13:57.360209" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:13:57.359822" elapsed="0.001171">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:57.361605" elapsed="0.000057"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:13:57.361256" elapsed="0.000480"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:13:57.361135" elapsed="0.000658"/>
</for>
<arg>${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>${node_list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:13:57.349528" elapsed="0.012461">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:13:59.374463" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:13:59.374606" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:13:59.374850" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:13:59.368135" elapsed="0.006776"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:13:59.375741" elapsed="0.000064"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:13:59.375103" elapsed="0.000784"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:13:59.377098" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:13:59.376363" elapsed="0.000853"/>
</kw>
<status status="PASS" start="2026-10-20T23:13:59.375945" elapsed="0.001342"/>
</branch>
<status status="PASS" start="2026-10-20T23:13:59.375056" elapsed="0.002312"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:13:59.378117" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:13:59.377703" elapsed="0.001251">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:13:59.379593" elapsed="0.000046"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:13:59.379231" elapsed="0.000481"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:13:59.379104" elapsed="0.000664"/>
</for>
<arg>${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>${node_list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:13:59.367113" elapsed="0.012866">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:14:01.393817" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:14:01.394037" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:14:01.394346" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:14:01.386535" elapsed="0.007875"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:14:01.395200" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:14:01.394626" elapsed="0.000727"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:14:01.396521" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:14:01.395793" elapsed="0.000845"/>
</kw>
<status status="PASS" start="2026-10-20T23:14:01.395413" elapsed="0.001296"/>
</branch>
<status status="PASS" start="2026-10-20T23:14:01.394577" elapsed="0.002178"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:14:01.397505" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:14:01.397057" elapsed="0.001186">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:14:01.398876" elapsed="0.000046"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:14:01.398575" elapsed="0.000421"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:14:01.398446" elapsed="0.000606"/>
</for>
<arg>${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>${node_list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:14:01.385551" elapsed="0.013691">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:14:03.411767" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:14:03.411889" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:14:03.412112" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:14:03.405433" elapsed="0.006737"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:14:03.413039" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:14:03.412398" elapsed="0.000771"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:14:03.414422" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:14:03.413681" elapsed="0.000891"/>
</kw>
<status status="PASS" start="2026-10-20T23:14:03.413226" elapsed="0.001437"/>
</branch>
<status status="PASS" start="2026-10-20T23:14:03.412344" elapsed="0.002375"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:14:03.415487" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:14:03.415030" elapsed="0.001274">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:14:03.416977" elapsed="0.000049"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:14:03.416630" elapsed="0.000559"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:14:03.416506" elapsed="0.000749"/>
</for>
<arg>${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>${node_list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:14:03.404417" elapsed="0.013100">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<msg time="2026-10-20T23:14:03.417721" level="FAIL">Keyword 'Check For Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</msg>
<arg>10s</arg>
<arg>2s</arg>
<arg>Check For Elements At URI</arg>
<arg>${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>${node_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-10-20T23:13:53.311749" elapsed="10.106189">Keyword 'Check For Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<doc>Get the stats for all nodes</doc>
<status status="FAIL" start="2026-10-20T23:13:53.310896" elapsed="10.107368">Keyword 'Check For Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</test>
<test id="s1-s1-s3-t2" name="Get Stats for node 1" line="29">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check Nodes Stats" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:14:03.429999" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:14:03.430112" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:14:03.430378" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=${node}</arg>
<arg>params=${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:14:03.424751" elapsed="0.006478">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:14:03.431692" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:14:03.432060" elapsed="0.000043"/>
</kw>
<arg>openflow%3A1</arg>
<doc>A GET on the /node/${node} API is made and specific flow stat
strings are checked for existence.</doc>
<status status="FAIL" start="2026-10-20T23:14:03.424014" elapsed="0.008331">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Nodes Stats" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:14:05.441783" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:14:05.441903" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:14:05.442118" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=${node}</arg>
<arg>params=${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:14:05.435936" elapsed="0.007116">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:14:05.443605" elapsed="0.000057"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:14:05.443991" elapsed="0.000045"/>
</kw>
<arg>openflow%3A1</arg>
<doc>A GET on the /node/${node} API is made and specific flow stat
strings are checked for existence.</doc>
<status status="FAIL" start="2026-10-20T23:14:05.435082" elapsed="0.009353">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Nodes Stats" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:14:07.454443" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:14:07.454596" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:14:07.454812" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=${node}</arg>
<arg>params=${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:14:07.448173" elapsed="0.007554">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:14:07.456153" elapsed="0.000058"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:14:07.456618" elapsed="0.000045"/>
</kw>
<arg>openflow%3A1</arg>
<doc>A GET on the /node/${node} API is made and specific flow stat
strings are checked for existence.</doc>
<status status="FAIL" start="2026-10-20T23:14:07.447397" elapsed="0.009462">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Nodes Stats" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:14:09.466769" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:14:09.466913" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:14:09.467143" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=${node}</arg>
<arg>params=${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:14:09.460560" elapsed="0.007555">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:14:09.468602" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:14:09.468991" elapsed="0.000045"/>
</kw>
<arg>openflow%3A1</arg>
<doc>A GET on the /node/${node} API is made and specific flow stat
strings are checked for existence.</doc>
<status status="FAIL" start="2026-10-20T23:14:09.459699" elapsed="0.009539">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Nodes Stats" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:14:11.481622" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:14:11.481742" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:14:11.481972" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=${node}</arg>
<arg>params=${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:14:11.475433" elapsed="0.007450">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:14:11.483408" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:14:11.483810" elapsed="0.000043"/>
</kw>
<arg>openflow%3A1</arg>
<doc>A GET on the /node/${node} API is made and specific flow stat
strings are checked for existence.</doc>
<status status="FAIL" start="2026-10-20T23:14:11.474629" elapsed="0.009414">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Nodes Stats" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:14:13.494200" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:14:13.494371" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:14:13.494642" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=${node}</arg>
<arg>params=${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:14:13.487917" elapsed="0.007644">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:14:13.496047" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:14:13.496437" elapsed="0.000043"/>
</kw>
<arg>openflow%3A1</arg>
<doc>A GET on the /node/${node} API is made and specific flow stat
strings are checked for existence.</doc>
<status status="FAIL" start="2026-10-20T23:14:13.486908" elapsed="0.009789">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<msg time="2026-10-20T23:14:13.496878" level="FAIL">Keyword 'Check Nodes Stats' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<arg>10s</arg>
<arg>2s</arg>
<arg>Check Nodes Stats</arg>
<arg>openflow%3A1</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-10-20T23:14:03.419698" elapsed="10.077367">Keyword 'Check Nodes Stats' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<doc>Get the stats for a node</doc>
<status status="FAIL" start="2026-10-20T23:14:03.418744" elapsed="10.078664">Keyword 'Check Nodes Stats' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</status>
</test>
<test id="s1-s1-s3-t3" name="Get Stats for node 2" line="33">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check Nodes Stats" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:14:13.507987" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:14:13.508099" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:14:13.508295" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=${node}</arg>
<arg>params=${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:14:13.502549" elapsed="0.006637">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:14:13.509642" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:14:13.510106" elapsed="0.000167"/>
</kw>
<arg>openflow%3A2</arg>
<doc>A GET on the /node/${node} API is made and specific flow stat
strings are checked for existence.</doc>
<status status="FAIL" start="2026-10-20T23:14:13.501840" elapsed="0.008787">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Nodes Stats" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:14:15.521992" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:14:15.522113" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:14:15.522371" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=${node}</arg>
<arg>params=${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:14:15.514218" elapsed="0.009037">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:14:15.523721" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:14:15.524081" elapsed="0.000041"/>
</kw>
<arg>openflow%3A2</arg>
<doc>A GET on the /node/${node} API is made and specific flow stat
strings are checked for existence.</doc>
<status status="FAIL" start="2026-10-20T23:14:15.513397" elapsed="0.010945">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Nodes Stats" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:14:17.534947" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:14:17.535098" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:14:17.535403" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=${node}</arg>
<arg>params=${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:14:17.528759" elapsed="0.007608">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:14:17.536826" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:14:17.537223" elapsed="0.000050"/>
</kw>
<arg>openflow%3A2</arg>
<doc>A GET on the /node/${node} API is made and specific flow stat
strings are checked for existence.</doc>
<status status="FAIL" start="2026-10-20T23:14:17.527887" elapsed="0.009620">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Nodes Stats" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:14:19.548159" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:14:19.548304" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:14:19.548769" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=${node}</arg>
<arg>params=${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:14:19.541367" elapsed="0.008570">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:14:19.550476" elapsed="0.000057"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:14:19.550960" elapsed="0.000049"/>
</kw>
<arg>openflow%3A2</arg>
<doc>A GET on the /node/${node} API is made and specific flow stat
strings are checked for existence.</doc>
<status status="FAIL" start="2026-10-20T23:14:19.540383" elapsed="0.010834">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Nodes Stats" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:14:21.561057" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:14:21.561178" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:14:21.561475" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=${node}</arg>
<arg>params=${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:14:21.554938" elapsed="0.007465">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:14:21.562874" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:14:21.563237" elapsed="0.000042"/>
</kw>
<arg>openflow%3A2</arg>
<doc>A GET on the /node/${node} API is made and specific flow stat
strings are checked for existence.</doc>
<status status="FAIL" start="2026-10-20T23:14:21.554066" elapsed="0.009445">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Nodes Stats" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:14:23.573566" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:14:23.573687" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:14:23.573950" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=${node}</arg>
<arg>params=${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:14:23.567114" elapsed="0.007800">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:14:23.575369" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:14:23.575739" elapsed="0.000067"/>
</kw>
<arg>openflow%3A2</arg>
<doc>A GET on the /node/${node} API is made and specific flow stat
strings are checked for existence.</doc>
<status status="FAIL" start="2026-10-20T23:14:23.566257" elapsed="0.009767">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<msg time="2026-10-20T23:14:23.576249" level="FAIL">Keyword 'Check Nodes Stats' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</msg>
<arg>10s</arg>
<arg>2s</arg>
<arg>Check Nodes Stats</arg>
<arg>openflow%3A2</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-10-20T23:14:13.498747" elapsed="10.077732">Keyword 'Check Nodes Stats' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<doc>Get the stats for a node</doc>
<status status="FAIL" start="2026-10-20T23:14:13.497839" elapsed="10.079083">Keyword 'Check Nodes Stats' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</status>
</test>
<test id="s1-s1-s3-t4" name="Get Stats for node 3" line="37">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check Nodes Stats" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:14:23.588199" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:14:23.588361" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:14:23.588572" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=${node}</arg>
<arg>params=${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:14:23.583019" elapsed="0.006448">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:14:23.589889" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:14:23.590253" elapsed="0.000043"/>
</kw>
<arg>openflow%3A3</arg>
<doc>A GET on the /node/${node} API is made and specific flow stat
strings are checked for existence.</doc>
<status status="FAIL" start="2026-10-20T23:14:23.582234" elapsed="0.008315">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Nodes Stats" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:14:25.600986" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:14:25.601109" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:14:25.601355" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=${node}</arg>
<arg>params=${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:14:25.594244" elapsed="0.007993">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:14:25.602684" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:14:25.603067" elapsed="0.000043"/>
</kw>
<arg>openflow%3A3</arg>
<doc>A GET on the /node/${node} API is made and specific flow stat
strings are checked for existence.</doc>
<status status="FAIL" start="2026-10-20T23:14:25.593381" elapsed="0.009922">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Nodes Stats" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:14:27.612996" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:14:27.613118" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:14:27.613470" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=${node}</arg>
<arg>params=${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:14:27.606973" elapsed="0.007432">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:14:27.614815" elapsed="0.000075"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:14:27.615211" elapsed="0.000043"/>
</kw>
<arg>openflow%3A3</arg>
<doc>A GET on the /node/${node} API is made and specific flow stat
strings are checked for existence.</doc>
<status status="FAIL" start="2026-10-20T23:14:27.606120" elapsed="0.009363">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Nodes Stats" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:14:29.625204" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:14:29.625370" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:14:29.625604" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=${node}</arg>
<arg>params=${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:14:29.619122" elapsed="0.007398">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:14:29.626954" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:14:29.627346" elapsed="0.000044"/>
</kw>
<arg>openflow%3A3</arg>
<doc>A GET on the /node/${node} API is made and specific flow stat
strings are checked for existence.</doc>
<status status="FAIL" start="2026-10-20T23:14:29.618288" elapsed="0.009294">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Nodes Stats" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:14:31.637793" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:14:31.637910" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:14:31.638174" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=${node}</arg>
<arg>params=${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:14:31.631761" elapsed="0.007348">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:14:31.639661" elapsed="0.000058"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:14:31.640117" elapsed="0.000046"/>
</kw>
<arg>openflow%3A3</arg>
<doc>A GET on the /node/${node} API is made and specific flow stat
strings are checked for existence.</doc>
<status status="FAIL" start="2026-10-20T23:14:31.630915" elapsed="0.009499">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Nodes Stats" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:14:33.650016" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:14:33.650231" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:14:33.650491" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=${node}</arg>
<arg>params=${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:14:33.643904" elapsed="0.007508">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:14:33.651823" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:14:33.652203" elapsed="0.000042"/>
</kw>
<arg>openflow%3A3</arg>
<doc>A GET on the /node/${node} API is made and specific flow stat
strings are checked for existence.</doc>
<status status="FAIL" start="2026-10-20T23:14:33.643102" elapsed="0.009368">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</status>
</kw>
<msg time="2026-10-20T23:14:33.652648" level="FAIL">Keyword 'Check Nodes Stats' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</msg>
<arg>10s</arg>
<arg>2s</arg>
<arg>Check Nodes Stats</arg>
<arg>openflow%3A3</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-10-20T23:14:23.578675" elapsed="10.074160">Keyword 'Check Nodes Stats' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</status>
</kw>
<doc>Get the stats for a node</doc>
<status status="FAIL" start="2026-10-20T23:14:23.577675" elapsed="10.075485">Keyword 'Check Nodes Stats' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</status>
</test>
<kw name="Delete All Sessions" owner="RequestsLibrary" type="TEARDOWN">
<msg time="2026-10-20T23:14:33.654442" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects </doc>
<status status="PASS" start="2026-10-20T23:14:33.654245" elapsed="0.000334"/>
</kw>
<doc>Test suite for RESTCONF statistics</doc>
<status status="FAIL" start="2026-10-20T23:13:53.281781" elapsed="40.372864"/>
</suite>
<suite id="s1-s1-s4" name="040 Restconf Frm" source="/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/MD_SAL_NSF_OF10/040_restconf_frm.robot">
<kw name="Create Session" owner="RequestsLibrary" type="SETUP">
<msg time="2026-10-20T23:14:33.682776" level="INFO">Creating Session using : alias=session, url=http://10.30.170.223:8181, headers={'Content-Type': 'application/xml'},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x756aa5738290&gt;, timeout=None, proxies=None, verify=False,                     debug=0 </msg>
<arg>session</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>headers=${HEADERS_XML}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-10-20T23:14:33.682191" elapsed="0.000918"/>
</kw>
<test id="s1-s1-s4-t1" name="Add a flow - Output to physical port#" line="21">
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:14:33.692493" level="INFO">PUT Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Content-Length': '506', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;priority&gt;2&lt;/priority&gt;&lt;flow-name&gt;Foo&lt;/flow-name&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;2048&lt;/type&gt;&lt;/ethernet-type&gt;&lt;/ethernet-match&gt;&lt;ipv4-destination&gt;10.0.20.1/32&lt;/ipv4-destination&gt;&lt;/match&gt;&lt;id&gt;152&lt;/id&gt;&lt;table_id&gt;0&lt;/table_id&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;openflow:1:1&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;/flow&gt; 
 </msg>
<msg time="2026-10-20T23:14:33.692613" level="INFO">PUT Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152 
 status=404, reason=Not Found 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-10-20T23:14:33.692801" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A1/flow-node-inventory:table=0/flow=152</arg>
<arg>headers=${HEADERS_XML}</arg>
<arg>data=${BODY2}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:14:33.684202" elapsed="0.009858">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152</status>
</kw>
<doc>Push a flow through REST-API</doc>
<status status="FAIL" start="2026-10-20T23:14:33.683259" elapsed="0.011153">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152</status>
</test>
<test id="s1-s1-s4-t2" name="Verify after adding flow config - Output to physical port#" line="29">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:14:33.701004" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=config 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=config 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:14:33.701183" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=config 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '448'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:14:33.701414" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=config Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A1/flow-node-inventory:table=0?content=config</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:14:33.695912" elapsed="0.006305">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=config Expected status: 404 != 200</status>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>152</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:14:33.702630" elapsed="0.000045"/>
</kw>
<doc>Verify the flow</doc>
<status status="FAIL" start="2026-10-20T23:14:33.694992" elapsed="0.007937">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=config Expected status: 404 != 200</status>
</test>
<test id="s1-s1-s4-t3" name="Verify after adding flow operational - Output to physical port#" line="37">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:14:33.705153" level="INFO">${elements} = ['10.0.20.1']</msg>
<var>${elements}</var>
<arg>10.0.20.1</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:14:33.704532" elapsed="0.000677"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:14:33.715089" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:14:33.715198" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '457'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:14:33.715455" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:14:33.709956" elapsed="0.005553"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:14:33.716265" elapsed="0.000081"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:14:33.715683" elapsed="0.000732"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:14:33.717510" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:14:33.716826" elapsed="0.000800"/>
</kw>
<status status="PASS" start="2026-10-20T23:14:33.716471" elapsed="0.001226"/>
</branch>
<status status="PASS" start="2026-10-20T23:14:33.715636" elapsed="0.002107"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:14:33.718456" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:14:33.718061" elapsed="0.001100">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:14:33.719745" elapsed="0.000043"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:14:33.719463" elapsed="0.000398"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:14:33.719302" elapsed="0.000615"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/flow-node-inventory:table=0/flow=152?content=nonconfig</arg>
<arg>${elements}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
['10.0.20.1'] is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:14:33.709060" elapsed="0.011070">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:14:35.730187" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:14:35.730599" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '457'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:14:35.730837" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:14:35.723941" elapsed="0.006952"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:14:35.731779" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:14:35.731104" elapsed="0.000797"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:14:35.733209" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:14:35.732474" elapsed="0.000883"/>
</kw>
<status status="PASS" start="2026-10-20T23:14:35.731955" elapsed="0.001477"/>
</branch>
<status status="PASS" start="2026-10-20T23:14:35.731055" elapsed="0.002424"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:14:35.734195" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:14:35.733783" elapsed="0.001179">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:14:35.735592" elapsed="0.000046"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:14:35.735256" elapsed="0.000459"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:14:35.735131" elapsed="0.000640"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/flow-node-inventory:table=0/flow=152?content=nonconfig</arg>
<arg>${elements}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
['10.0.20.1'] is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:14:35.722898" elapsed="0.013064">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:14:37.746052" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:14:37.746198" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '457'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:14:37.746481" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:14:37.739901" elapsed="0.006639"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:14:37.747362" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:14:37.746727" elapsed="0.000761"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:14:37.748651" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:14:37.747925" elapsed="0.000846"/>
</kw>
<status status="PASS" start="2026-10-20T23:14:37.747544" elapsed="0.001300"/>
</branch>
<status status="PASS" start="2026-10-20T23:14:37.746680" elapsed="0.002211"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:14:37.749631" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:14:37.749214" elapsed="0.001306">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:14:37.751616" elapsed="0.000050"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:14:37.750787" elapsed="0.000958"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:14:37.750664" elapsed="0.001139"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/flow-node-inventory:table=0/flow=152?content=nonconfig</arg>
<arg>${elements}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
['10.0.20.1'] is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:14:37.738801" elapsed="0.013199">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:14:39.761969" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:14:39.762090" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '457'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:14:39.762366" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:14:39.755940" elapsed="0.006485"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:14:39.763213" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:14:39.762612" elapsed="0.000755"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:14:39.764507" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:14:39.763782" elapsed="0.000843"/>
</kw>
<status status="PASS" start="2026-10-20T23:14:39.763424" elapsed="0.001273"/>
</branch>
<status status="PASS" start="2026-10-20T23:14:39.762566" elapsed="0.002177"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:14:39.765473" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:14:39.765037" elapsed="0.001221">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:14:39.766849" elapsed="0.000044"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:14:39.766552" elapsed="0.000414"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:14:39.766430" elapsed="0.000592"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/flow-node-inventory:table=0/flow=152?content=nonconfig</arg>
<arg>${elements}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
['10.0.20.1'] is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:14:39.754850" elapsed="0.012386">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:14:41.777789" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:14:41.777911" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '457'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:14:41.778262" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:14:41.771074" elapsed="0.007278"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:14:41.779114" elapsed="0.000078"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:14:41.778544" elapsed="0.000716"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:14:41.780431" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:14:41.779704" elapsed="0.000845"/>
</kw>
<status status="PASS" start="2026-10-20T23:14:41.779344" elapsed="0.001276"/>
</branch>
<status status="PASS" start="2026-10-20T23:14:41.778495" elapsed="0.002170"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:14:41.781403" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:14:41.780961" elapsed="0.001232">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:14:41.782798" elapsed="0.000043"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:14:41.782496" elapsed="0.000417"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:14:41.782367" elapsed="0.000602"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/flow-node-inventory:table=0/flow=152?content=nonconfig</arg>
<arg>${elements}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
['10.0.20.1'] is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:14:41.770044" elapsed="0.013141">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:14:43.792975" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:14:43.793094" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '457'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:14:43.793376" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:14:43.787059" elapsed="0.006376"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:14:43.794188" elapsed="0.000078"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:14:43.793622" elapsed="0.000754"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:14:43.796030" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:14:43.794803" elapsed="0.001348"/>
</kw>
<status status="PASS" start="2026-10-20T23:14:43.794435" elapsed="0.001814"/>
</branch>
<status status="PASS" start="2026-10-20T23:14:43.793575" elapsed="0.002723"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:14:43.797015" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:14:43.796632" elapsed="0.001168">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:14:43.798409" elapsed="0.000047"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:14:43.798063" elapsed="0.000466"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:14:43.797942" elapsed="0.000643"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/flow-node-inventory:table=0/flow=152?content=nonconfig</arg>
<arg>${elements}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
['10.0.20.1'] is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:14:43.785982" elapsed="0.012884">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152?content=nonconfig Expected status: 404 != 200</status>
</kw>
<msg time="2026-10-20T23:14:43.799058" level="FAIL">Keyword 'Check For Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152?content=nonconfig Expected status: 404 != 200</msg>
<arg>10s</arg>
<arg>2s</arg>
<arg>Check For Elements At URI</arg>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/flow-node-inventory:table=0/flow=152?content=nonconfig</arg>
<arg>${elements}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-10-20T23:14:33.705622" elapsed="10.093659">Keyword 'Check For Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152?content=nonconfig Expected status: 404 != 200</status>
</kw>
<doc>Verify the flow</doc>
<status status="FAIL" start="2026-10-20T23:14:33.703529" elapsed="10.096097">Keyword 'Check For Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152?content=nonconfig Expected status: 404 != 200</status>
</test>
<test id="s1-s1-s4-t4" name="Remove a flow - Output to physical port#" line="47">
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:14:43.806927" level="INFO">DELETE Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:14:43.807023" level="INFO">DELETE Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152 
 status=404, reason=Not Found 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-10-20T23:14:43.807190" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152 Expected status: 404 != 204</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A1/flow-node-inventory:table=0/flow=152</arg>
<arg>expected_status=204</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:14:43.801167" elapsed="0.006864">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152 Expected status: 404 != 204</status>
</kw>
<doc>Remove a flow</doc>
<status status="FAIL" start="2026-10-20T23:14:43.800270" elapsed="0.008124">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=152 Expected status: 404 != 204</status>
</test>
<test id="s1-s1-s4-t5" name="Verify after deleting flow config - Output to physical port#" line="54">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:14:43.814993" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=config 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=config 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:14:43.815103" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=config 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '448'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:14:43.815353" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=config Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A1/flow-node-inventory:table=0?content=config</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:14:43.809907" elapsed="0.006229">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=config Expected status: 404 != 200</status>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>152</arg>
<doc>Fails if the `container` contains the `item`.</doc>
<status status="NOT RUN" start="2026-10-20T23:14:43.816566" elapsed="0.000047"/>
</kw>
<doc>Verify the flow</doc>
<status status="FAIL" start="2026-10-20T23:14:43.808947" elapsed="0.007921">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=config Expected status: 404 != 200</status>
</test>
<test id="s1-s1-s4-t6" name="Verify after deleting flow operational - Output to physical port#" line="63">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:14:43.819025" level="INFO">${elements} = ['10.0.20.1']</msg>
<var>${elements}</var>
<arg>10.0.20.1</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:14:43.818402" elapsed="0.000678"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements Not At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:14:43.831955" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:14:43.832067" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '448'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:14:43.832428" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:14:43.826147" elapsed="0.006340"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:14:43.833255" elapsed="0.000084"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:14:43.832665" elapsed="0.000743"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:14:43.834550" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:14:43.833835" elapsed="0.000830"/>
</kw>
<status status="PASS" start="2026-10-20T23:14:43.833464" elapsed="0.001271"/>
</branch>
<status status="PASS" start="2026-10-20T23:14:43.832619" elapsed="0.002162"/>
</if>
<if>
<branch type="IF" condition="&quot;${check_for_null}&quot; == &quot;True&quot;">
<if>
<branch type="IF" condition="${resp.status_code} == 404 or ${resp.status_code} == 409">
<return>
<status status="NOT RUN" start="2026-10-20T23:14:43.835244" elapsed="0.000040"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:14:43.835136" elapsed="0.000235"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:14:43.835104" elapsed="0.000315"/>
</if>
<status status="NOT RUN" start="2026-10-20T23:14:43.834901" elapsed="0.000567"/>
</branch>
<status status="PASS" start="2026-10-20T23:14:43.834865" elapsed="0.000647"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:14:43.836182" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:14:43.835804" elapsed="0.001145">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` contains the `item`.</doc>
<status status="NOT RUN" start="2026-10-20T23:14:43.838001" elapsed="0.000048"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:14:43.837227" elapsed="0.000899"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:14:43.837088" elapsed="0.001097"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig</arg>
<arg>${elements}</arg>
<doc>A GET is made at the supplied ${uri} and every item in the list of
['10.0.20.1'] is verified to NOT exist in the response. If ${check_for_null} is True
return of 404 is treated as empty list. From Neon onwards, an empty list is always
returned as null, giving 404 on rest call.</doc>
<status status="FAIL" start="2026-10-20T23:14:43.825142" elapsed="0.013288">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements Not At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:14:45.851700" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:14:45.851820" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '448'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:14:45.852035" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:14:45.845521" elapsed="0.006569"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:14:45.852892" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:14:45.852295" elapsed="0.000716"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:14:45.854201" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:14:45.853482" elapsed="0.000888"/>
</kw>
<status status="PASS" start="2026-10-20T23:14:45.853066" elapsed="0.001376"/>
</branch>
<status status="PASS" start="2026-10-20T23:14:45.852227" elapsed="0.002262"/>
</if>
<if>
<branch type="IF" condition="&quot;${check_for_null}&quot; == &quot;True&quot;">
<if>
<branch type="IF" condition="${resp.status_code} == 404 or ${resp.status_code} == 409">
<return>
<status status="NOT RUN" start="2026-10-20T23:14:45.854923" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:14:45.854844" elapsed="0.000165"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:14:45.854813" elapsed="0.000242"/>
</if>
<status status="NOT RUN" start="2026-10-20T23:14:45.854607" elapsed="0.000495"/>
</branch>
<status status="PASS" start="2026-10-20T23:14:45.854572" elapsed="0.000701"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:14:45.855996" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:14:45.855606" elapsed="0.001204">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` contains the `item`.</doc>
<status status="NOT RUN" start="2026-10-20T23:14:45.857421" elapsed="0.000047"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:14:45.857075" elapsed="0.000465"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:14:45.856953" elapsed="0.000644"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig</arg>
<arg>${elements}</arg>
<doc>A GET is made at the supplied ${uri} and every item in the list of
['10.0.20.1'] is verified to NOT exist in the response. If ${check_for_null} is True
return of 404 is treated as empty list. From Neon onwards, an empty list is always
returned as null, giving 404 on rest call.</doc>
<status status="FAIL" start="2026-10-20T23:14:45.844333" elapsed="0.013457">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements Not At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:14:47.872051" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:14:47.872169" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '448'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:14:47.872464" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:14:47.864096" elapsed="0.008429"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:14:47.873271" elapsed="0.000114"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:14:47.872708" elapsed="0.000759"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:14:47.874632" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:14:47.873913" elapsed="0.000835"/>
</kw>
<status status="PASS" start="2026-10-20T23:14:47.873524" elapsed="0.001294"/>
</branch>
<status status="PASS" start="2026-10-20T23:14:47.872661" elapsed="0.002202"/>
</if>
<if>
<branch type="IF" condition="&quot;${check_for_null}&quot; == &quot;True&quot;">
<if>
<branch type="IF" condition="${resp.status_code} == 404 or ${resp.status_code} == 409">
<return>
<status status="NOT RUN" start="2026-10-20T23:14:47.875289" elapsed="0.000079"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:14:47.875212" elapsed="0.000213"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:14:47.875179" elapsed="0.000292"/>
</if>
<status status="NOT RUN" start="2026-10-20T23:14:47.874978" elapsed="0.000540"/>
</branch>
<status status="PASS" start="2026-10-20T23:14:47.874945" elapsed="0.000618"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:14:47.876249" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:14:47.875865" elapsed="0.001155">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` contains the `item`.</doc>
<status status="NOT RUN" start="2026-10-20T23:14:47.877623" elapsed="0.000046"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:14:47.877280" elapsed="0.000461"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:14:47.877159" elapsed="0.000636"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig</arg>
<arg>${elements}</arg>
<doc>A GET is made at the supplied ${uri} and every item in the list of
['10.0.20.1'] is verified to NOT exist in the response. If ${check_for_null} is True
return of 404 is treated as empty list. From Neon onwards, an empty list is always
returned as null, giving 404 on rest call.</doc>
<status status="FAIL" start="2026-10-20T23:14:47.863031" elapsed="0.014953">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements Not At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:14:49.891344" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:14:49.891570" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '448'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:14:49.891807" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:14:49.884732" elapsed="0.007130"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:14:49.892685" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:14:49.892045" elapsed="0.000762"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:14:49.893954" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:14:49.893225" elapsed="0.000846"/>
</kw>
<status status="PASS" start="2026-10-20T23:14:49.892863" elapsed="0.001278"/>
</branch>
<status status="PASS" start="2026-10-20T23:14:49.891998" elapsed="0.002189"/>
</if>
<if>
<branch type="IF" condition="&quot;${check_for_null}&quot; == &quot;True&quot;">
<if>
<branch type="IF" condition="${resp.status_code} == 404 or ${resp.status_code} == 409">
<return>
<status status="NOT RUN" start="2026-10-20T23:14:49.894672" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:14:49.894597" elapsed="0.000162"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:14:49.894565" elapsed="0.000239"/>
</if>
<status status="NOT RUN" start="2026-10-20T23:14:49.894338" elapsed="0.000513"/>
</branch>
<status status="PASS" start="2026-10-20T23:14:49.894273" elapsed="0.000621"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:14:49.895622" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:14:49.895186" elapsed="0.001228">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` contains the `item`.</doc>
<status status="NOT RUN" start="2026-10-20T23:14:49.896971" elapsed="0.000045"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:14:49.896677" elapsed="0.000412"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:14:49.896557" elapsed="0.000588"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig</arg>
<arg>${elements}</arg>
<doc>A GET is made at the supplied ${uri} and every item in the list of
['10.0.20.1'] is verified to NOT exist in the response. If ${check_for_null} is True
return of 404 is treated as empty list. From Neon onwards, an empty list is always
returned as null, giving 404 on rest call.</doc>
<status status="FAIL" start="2026-10-20T23:14:49.883661" elapsed="0.013724">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements Not At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:14:51.910625" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:14:51.910745" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '448'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:14:51.910960" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:14:51.904280" elapsed="0.006734"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:14:51.911835" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:14:51.911196" elapsed="0.000760"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:14:51.913097" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:14:51.912430" elapsed="0.000942"/>
</kw>
<status status="PASS" start="2026-10-20T23:14:51.912011" elapsed="0.001459"/>
</branch>
<status status="PASS" start="2026-10-20T23:14:51.911149" elapsed="0.002368"/>
</if>
<if>
<branch type="IF" condition="&quot;${check_for_null}&quot; == &quot;True&quot;">
<if>
<branch type="IF" condition="${resp.status_code} == 404 or ${resp.status_code} == 409">
<return>
<status status="NOT RUN" start="2026-10-20T23:14:51.913955" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:14:51.913878" elapsed="0.000162"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:14:51.913846" elapsed="0.000240"/>
</if>
<status status="NOT RUN" start="2026-10-20T23:14:51.913638" elapsed="0.000495"/>
</branch>
<status status="PASS" start="2026-10-20T23:14:51.913602" elapsed="0.000576"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:14:51.914916" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:14:51.914521" elapsed="0.001205">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` contains the `item`.</doc>
<status status="NOT RUN" start="2026-10-20T23:14:51.916284" elapsed="0.000077"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:14:51.915990" elapsed="0.000469"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:14:51.915869" elapsed="0.000646"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig</arg>
<arg>${elements}</arg>
<doc>A GET is made at the supplied ${uri} and every item in the list of
['10.0.20.1'] is verified to NOT exist in the response. If ${check_for_null} is True
return of 404 is treated as empty list. From Neon onwards, an empty list is always
returned as null, giving 404 on rest call.</doc>
<status status="FAIL" start="2026-10-20T23:14:51.903131" elapsed="0.013578">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements Not At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:14:53.928991" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:14:53.929108" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '448'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:14:53.929360" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:14:53.923021" elapsed="0.006398"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:14:53.930204" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:14:53.929626" elapsed="0.000733"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:14:53.931527" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:14:53.930812" elapsed="0.000835"/>
</kw>
<status status="PASS" start="2026-10-20T23:14:53.930416" elapsed="0.001303"/>
</branch>
<status status="PASS" start="2026-10-20T23:14:53.929580" elapsed="0.002184"/>
</if>
<if>
<branch type="IF" condition="&quot;${check_for_null}&quot; == &quot;True&quot;">
<if>
<branch type="IF" condition="${resp.status_code} == 404 or ${resp.status_code} == 409">
<return>
<status status="NOT RUN" start="2026-10-20T23:14:53.932704" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:14:53.932614" elapsed="0.000179"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:14:53.932081" elapsed="0.000759"/>
</if>
<status status="NOT RUN" start="2026-10-20T23:14:53.931879" elapsed="0.001011"/>
</branch>
<status status="PASS" start="2026-10-20T23:14:53.931845" elapsed="0.001088"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:14:53.933672" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:14:53.933230" elapsed="0.001214">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` contains the `item`.</doc>
<status status="NOT RUN" start="2026-10-20T23:14:53.935024" elapsed="0.000057"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:14:53.934727" elapsed="0.000427"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:14:53.934605" elapsed="0.000605"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig</arg>
<arg>${elements}</arg>
<doc>A GET is made at the supplied ${uri} and every item in the list of
['10.0.20.1'] is verified to NOT exist in the response. If ${check_for_null} is True
return of 404 is treated as empty list. From Neon onwards, an empty list is always
returned as null, giving 404 on rest call.</doc>
<status status="FAIL" start="2026-10-20T23:14:53.921927" elapsed="0.013506">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig Expected status: 404 != 200</status>
</kw>
<msg time="2026-10-20T23:14:53.935739" level="FAIL">Keyword 'Check For Elements Not At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig Expected status: 404 != 200</msg>
<arg>10s</arg>
<arg>2s</arg>
<arg>Check For Elements Not At URI</arg>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig</arg>
<arg>${elements}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-10-20T23:14:43.819516" elapsed="10.116415">Keyword 'Check For Elements Not At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig Expected status: 404 != 200</status>
</kw>
<doc>Verify the flow</doc>
<status status="FAIL" start="2026-10-20T23:14:43.817449" elapsed="10.118794">Keyword 'Check For Elements Not At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0?content=nonconfig Expected status: 404 != 200</status>
</test>
<kw name="Delete All Sessions" owner="RequestsLibrary" type="TEARDOWN">
<msg time="2026-10-20T23:14:53.937647" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects </doc>
<status status="PASS" start="2026-10-20T23:14:53.937460" elapsed="0.000332"/>
</kw>
<doc>Test suite for RESTCONF FRM</doc>
<status status="FAIL" start="2026-10-20T23:14:33.656032" elapsed="20.281830"/>
</suite>
<kw name="Stop Mininet" owner="Utils" type="TEARDOWN">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:14:53.941106" 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-10-20T23:14:53.940623" elapsed="0.000579"/>
</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-10-20T23:14:53.941567" elapsed="0.000253"/>
</kw>
<kw name="Read" owner="SSHLibrary">
<doc>Consumes and returns everything available on the server output.</doc>
<status status="PASS" start="2026-10-20T23:14:53.942118" elapsed="0.000292"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-20T23:14:53.947101" 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-10-20T23:14:53.942723" elapsed="0.004491"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-10-20T23:14:54.186647" level="INFO">*** Stopping 1 controllers
c0 
*** Stopping 6 links
......
*** Stopping 3 switches
s1 s2 s3 
*** Stopping 4 hosts
h1 h2 h3 h4 
*** Done
completed in 223.406 seconds
[?2004h[jenkins@releng-34016-79-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-10-20T23:14:53.947576" elapsed="0.239189"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:14:54.186965" elapsed="0.000199"/>
</kw>
<doc>Cleanup/Shutdown work that should be done at the completion of all
tests</doc>
<status status="PASS" start="2026-10-20T23:14:53.939965" elapsed="0.247257"/>
</kw>
<doc>Test suite for MD-SAL NSF</doc>
<status status="FAIL" start="2026-10-20T23:11:07.696415" elapsed="226.490839"/>
</suite>
<suite id="s1-s2" name="MD SAL NSF OF13" source="/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/MD_SAL_NSF_OF13">
<kw name="Start Mininet" owner="Utils" type="SETUP">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:14:54.200492" level="INFO">Start the test on the base edition</msg>
<arg>Start the test on the base edition</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:14:54.200238" elapsed="0.000299"/>
</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 or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:14:54.202398" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:14:54.202152" elapsed="0.000299"/>
</branch>
<status status="PASS" start="2026-10-20T23:14:54.202130" elapsed="0.000359"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:14:54.202816" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-10-20T23:14:54.202666" elapsed="0.000273"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:14:54.203401" level="INFO">Attempting to execute command "sudo mn -c" on remote system "10.30.170.219" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:14:54.203100" elapsed="0.000344"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:14:54.203934" level="INFO">${conn_id} = 6</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-20T23:14:54.203630" elapsed="0.000328"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-20T23:14:54.204701" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:14:54.204770" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-20T23:14:54.204423" elapsed="0.000370"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:14:54.204916" elapsed="0.000296"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:14:54.205949" level="INFO">Logging into '10.30.170.219:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:14:54.842930" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Tue Oct 20 23:14:54 UTC 2026

  System load:  0.0                Processes:             109
  Usage of /:   19.8% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.219
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

5 updates can be applied immediately.
To see these additional updates run: apt list --upgradable

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


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


Last login: Tue Oct 20 23:11:10 2026 from 10.30.170.114
[?2004h[jenkins@releng-34016-79-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-10-20T23:14:54.205722" elapsed="0.637453"/>
</kw>
<msg time="2026-10-20T23:14:54.843254" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:14:54.205365" elapsed="0.637982"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-10-20T23:14:54.204127" elapsed="0.639331"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:14:54.843966" level="INFO">Executing command 'sudo mn -c'.</msg>
<msg time="2026-10-20T23:14:56.096994" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:14:56.097388" level="INFO">${stdout} = </msg>
<msg time="2026-10-20T23:14:56.097492" 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-10-20T23:14:54.843733" elapsed="1.253835"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:14:56.097955" elapsed="0.000530"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:14:56.099593" 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-10-20T23:14:56.098950" 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-10-20T23:14:56.100110" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:14:56.099868" elapsed="0.000342"/>
</branch>
<status status="PASS" start="2026-10-20T23:14:56.099821" elapsed="0.000438"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-10-20T23:14:56.100614" elapsed="0.000064"/>
</return>
<status status="PASS" start="2026-10-20T23:14:56.100403" elapsed="0.000345"/>
</branch>
<status status="PASS" start="2026-10-20T23:14:56.100369" elapsed="0.000430"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:14:56.100870" elapsed="0.000029"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:14:56.102235" elapsed="0.000702"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-20T23:14:56.103480" elapsed="0.000357"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:14:56.104100" elapsed="0.000200"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-10-20T23:14:56.101501" elapsed="0.002943"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-10-20T23:14:54.201781" elapsed="1.902848"/>
</kw>
<msg time="2026-10-20T23:14:56.104739" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:14:54.201225" elapsed="1.903617"/>
</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-10-20T23:14:54.200885" elapsed="1.904115"/>
</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 or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:14:56.108616" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:14:56.108108" elapsed="0.000627"/>
</branch>
<status status="PASS" start="2026-10-20T23:14:56.108069" elapsed="0.000717"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:14:56.109461" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-10-20T23:14:56.109154" elapsed="0.000595"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:14:56.110809" 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.219" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:14:56.110107" elapsed="0.000898"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:14:56.112074" level="INFO">${conn_id} = 8</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-20T23:14:56.111384" elapsed="0.000746"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-20T23:14:56.114422" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:14:56.114631" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-20T23:14:56.113175" elapsed="0.001508"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:14:56.114995" elapsed="0.001050"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:14:56.117764" level="INFO">Logging into '10.30.170.219:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:14:56.544655" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Tue Oct 20 23:14:54 UTC 2026

  System load:  0.0                Processes:             109
  Usage of /:   19.8% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.219
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

5 updates can be applied immediately.
To see these additional updates run: apt list --upgradable

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


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


Last login: Tue Oct 20 23:14:54 2026 from 10.30.170.114
[?2004h[jenkins@releng-34016-79-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-10-20T23:14:56.117195" elapsed="0.427587"/>
</kw>
<msg time="2026-10-20T23:14:56.544852" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:14:56.116395" elapsed="0.428524"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-10-20T23:14:56.112557" elapsed="0.432464"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:14:56.545456" 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-10-20T23:14:56.598637" level="INFO">Command exited with return code -1.</msg>
<msg time="2026-10-20T23:14:56.598867" level="INFO">${stdout} = </msg>
<msg time="2026-10-20T23:14:56.598956" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:14:56.545247" elapsed="0.053759"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:14:56.599293" elapsed="0.000490"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:14:56.600839" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:14:56.600194" 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-10-20T23:14:56.601405" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:14:56.601110" elapsed="0.000407"/>
</branch>
<status status="PASS" start="2026-10-20T23:14:56.601055" elapsed="0.000536"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-10-20T23:14:56.601910" elapsed="0.000058"/>
</return>
<status status="PASS" start="2026-10-20T23:14:56.601711" elapsed="0.000329"/>
</branch>
<status status="PASS" start="2026-10-20T23:14:56.601677" elapsed="0.000417"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:14:56.602170" 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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:14:56.603693" elapsed="0.000708"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-20T23:14:56.604801" elapsed="0.000339"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:14:56.605447" 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-10-20T23:14:56.602876" elapsed="0.002928"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-10-20T23:14:56.107248" elapsed="0.498726"/>
</kw>
<msg time="2026-10-20T23:14:56.606086" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:14:56.106103" elapsed="0.500087"/>
</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-10-20T23:14:56.105288" elapsed="0.501102"/>
</kw>
<status status="PASS" start="2026-10-20T23:14:54.200671" elapsed="2.405981"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:14:56.607805" level="INFO">${mininet_conn_id} = 10</msg>
<var>${mininet_conn_id}</var>
<arg>${system}</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-10-20T23:14:56.607029" elapsed="0.000835"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-20T23:14:56.609034" level="INFO">${mininet_conn_id} = 10</msg>
<arg>${mininet_conn_id}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-20T23:14:56.608280" elapsed="0.000849"/>
</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-10-20T23:14:56.612718" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:14:56.612889" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-20T23:14:56.612068" elapsed="0.000875"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:14:56.613240" elapsed="0.000742"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:14:56.615810" level="INFO">Logging into '10.30.170.219:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:14:57.019143" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Tue Oct 20 23:14:54 UTC 2026

  System load:  0.0                Processes:             109
  Usage of /:   19.8% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.219
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

5 updates can be applied immediately.
To see these additional updates run: apt list --upgradable

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


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


Last login: Tue Oct 20 23:14:56 2026 from 10.30.170.114
[?2004h[jenkins@releng-34016-79-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-10-20T23:14:56.615197" elapsed="0.404087"/>
</kw>
<msg time="2026-10-20T23:14:57.019374" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:14:56.614345" elapsed="0.405107"/>
</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-10-20T23:14:56.611186" elapsed="0.408384"/>
</kw>
<msg time="2026-10-20T23:14:57.019619" 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-10-20T23:14:56.610358" elapsed="0.409304"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<doc>Call Flexible SSH Login, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-10-20T23:14:56.609531" elapsed="0.410199"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:14:57.020135" level="INFO">Executing command 'sudo ovs-vsctl set-manager ptcp:6644'.</msg>
<msg time="2026-10-20T23:14:57.042903" 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-10-20T23:14:57.020001" elapsed="0.022977"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-20T23:14:57.085560" level="INFO">sudo mn --controller=remote,ip=10.30.170.223 --topo tree,2 --switch ovsk,protocols=OpenFlow13</msg>
<arg>${start}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-10-20T23:14:57.043178" elapsed="0.042436"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-10-20T23:14:57.397070" level="INFO">[?2004l*** Creating network
*** Adding controller
Connecting to remote controller at 10.30.170.223:6653
*** 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
c0 
*** 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-10-20T23:14:57.085756" elapsed="0.311418"/>
</kw>
<doc>Basic setup/cleanup work that can be done safely before any system
is run.</doc>
<status status="PASS" start="2026-10-20T23:14:54.199861" elapsed="3.197396"/>
</kw>
<suite id="s1-s2-s1" name="010 Restconf Inventory" source="/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/MD_SAL_NSF_OF13/010_restconf_inventory.robot">
<kw name="Create Session" owner="RequestsLibrary" type="SETUP">
<msg time="2026-10-20T23:14:57.409914" level="INFO">Creating Session using : alias=session, url=http://10.30.170.223:8181, headers={'Content-Type': 'application/xml'},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x756aa5725a90&gt;, timeout=None, proxies=None, verify=False,                     debug=0 </msg>
<arg>session</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>headers=${HEADERS_XML}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-10-20T23:14:57.409637" elapsed="0.000455"/>
</kw>
<test id="s1-s2-s1-t1" name="Get list of nodes" line="30">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:14:57.419039" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:14:57.419095" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:14:57.419381" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:14:57.413300" elapsed="0.006108"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:14:57.419776" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:14:57.419491" elapsed="0.000339"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:14:57.420367" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:14:57.420016" elapsed="0.000405"/>
</kw>
<status status="PASS" start="2026-10-20T23:14:57.419855" elapsed="0.000598"/>
</branch>
<status status="PASS" start="2026-10-20T23:14:57.419467" elapsed="0.001007"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:14:57.420798" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:14:57.420621" elapsed="0.000539">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:14:57.421436" elapsed="0.000021"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:14:57.421284" elapsed="0.000206"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:14:57.421226" elapsed="0.000290"/>
</for>
<arg>${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>${node_list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:14:57.412942" elapsed="0.008677">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:14:59.434086" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:14:59.434227" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:14:59.434512" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:14:59.428134" elapsed="0.006435"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:14:59.435382" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:14:59.434773" elapsed="0.000732"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:14:59.436676" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:14:59.435957" elapsed="0.000837"/>
</kw>
<status status="PASS" start="2026-10-20T23:14:59.435560" elapsed="0.001306"/>
</branch>
<status status="PASS" start="2026-10-20T23:14:59.434727" elapsed="0.002186"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:14:59.437653" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:14:59.437216" elapsed="0.001198">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:14:59.438996" elapsed="0.000044"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:14:59.438698" elapsed="0.000415"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:14:59.438554" elapsed="0.000615"/>
</for>
<arg>${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>${node_list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:14:59.427187" elapsed="0.012206">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:01.451184" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:15:01.451448" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:15:01.451691" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:15:01.445405" elapsed="0.006345"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:15:01.452534" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:15:01.451932" elapsed="0.000724"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:15:01.453823" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:15:01.453099" elapsed="0.000844"/>
</kw>
<status status="PASS" start="2026-10-20T23:15:01.452741" elapsed="0.001275"/>
</branch>
<status status="PASS" start="2026-10-20T23:15:01.451885" elapsed="0.002178"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:01.454799" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:15:01.454393" elapsed="0.001174">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:15:01.456147" elapsed="0.000046"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:15:01.455851" elapsed="0.000416"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:15:01.455729" elapsed="0.000628"/>
</for>
<arg>${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>${node_list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:15:01.444451" elapsed="0.012103">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:03.468190" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:15:03.468345" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:15:03.468566" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:15:03.462547" elapsed="0.006074"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:15:03.469423" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:15:03.468827" elapsed="0.000717"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:15:03.470680" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:15:03.469980" elapsed="0.000845"/>
</kw>
<status status="PASS" start="2026-10-20T23:15:03.469599" elapsed="0.001299"/>
</branch>
<status status="PASS" start="2026-10-20T23:15:03.468779" elapsed="0.002164"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:03.471656" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:15:03.471238" elapsed="0.001238">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:15:03.473219" elapsed="0.000049"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:15:03.472865" elapsed="0.000619"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:15:03.472618" elapsed="0.000931"/>
</for>
<arg>${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>${node_list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:15:03.461566" elapsed="0.012219">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:05.486051" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:15:05.486169" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:15:05.486444" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:15:05.480335" elapsed="0.006171"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:15:05.487284" elapsed="0.000085"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:15:05.486691" elapsed="0.000748"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:15:05.488585" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:15:05.487877" elapsed="0.000825"/>
</kw>
<status status="PASS" start="2026-10-20T23:15:05.487496" elapsed="0.001277"/>
</branch>
<status status="PASS" start="2026-10-20T23:15:05.486645" elapsed="0.002198"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:05.489562" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:15:05.489143" elapsed="0.001202">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:15:05.490925" elapsed="0.000045"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:15:05.490606" elapsed="0.000436"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:15:05.490488" elapsed="0.000611"/>
</for>
<arg>${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>${node_list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:15:05.479397" elapsed="0.011893">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:07.503613" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:15:07.503733" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:15:07.503970" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:15:07.497438" elapsed="0.006588"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:15:07.504815" elapsed="0.000082"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:15:07.504210" elapsed="0.000755"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:15:07.506114" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:15:07.505410" elapsed="0.000950"/>
</kw>
<status status="PASS" start="2026-10-20T23:15:07.505021" elapsed="0.001415"/>
</branch>
<status status="PASS" start="2026-10-20T23:15:07.504163" elapsed="0.002318"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:07.507193" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:15:07.506780" elapsed="0.001219">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:15:07.508596" elapsed="0.000046"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:15:07.508265" elapsed="0.000450"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:15:07.508142" elapsed="0.000628"/>
</for>
<arg>${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>${node_list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:15:07.496400" elapsed="0.012594">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<msg time="2026-10-20T23:15:07.509182" level="FAIL">Keyword 'Check For Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</msg>
<arg>10s</arg>
<arg>2s</arg>
<arg>Check For Elements At URI</arg>
<arg>${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>${node_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-10-20T23:14:57.410610" elapsed="10.098801">Keyword 'Check For Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<doc>Get the inventory</doc>
<status status="FAIL" start="2026-10-20T23:14:57.410160" elapsed="10.099568">Keyword 'Check For Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</test>
<test id="s1-s2-s1-t2" name="Check No Link Down" line="39">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Specific Number Of Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:07.524411" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:15:07.524526" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:15:07.524726" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:15:07.519522" elapsed="0.005260"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:15:07.525895" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:15:07.525212" elapsed="0.000800"/>
</kw>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:07.526716" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:15:07.526350" elapsed="0.001114">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Should Contain X Times" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${element}</arg>
<arg>${expected_count}</arg>
<doc>Fails if the `container` does not contain the `item` `count` times.</doc>
<status status="NOT RUN" start="2026-10-20T23:15:07.527825" elapsed="0.000066"/>
</kw>
<arg>${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>"link-down":false</arg>
<arg>8</arg>
<doc>A GET is made to the specified ${URI} and the specific count of a
given element is done (as supplied by ${element} and ${expected_count})</doc>
<status status="FAIL" start="2026-10-20T23:15:07.518703" elapsed="0.009382">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Specific Number Of Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:09.541950" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:15:09.542070" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:15:09.542409" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:15:09.536276" elapsed="0.006192"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:15:09.543641" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:15:09.542900" elapsed="0.000858"/>
</kw>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:09.544512" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:15:09.544098" elapsed="0.001163">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Should Contain X Times" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${element}</arg>
<arg>${expected_count}</arg>
<doc>Fails if the `container` does not contain the `item` `count` times.</doc>
<status status="NOT RUN" start="2026-10-20T23:15:09.545650" elapsed="0.000045"/>
</kw>
<arg>${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>"link-down":false</arg>
<arg>8</arg>
<doc>A GET is made to the specified ${URI} and the specific count of a
given element is done (as supplied by ${element} and ${expected_count})</doc>
<status status="FAIL" start="2026-10-20T23:15:09.535361" elapsed="0.010534">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Specific Number Of Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:11.559352" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:15:11.559471" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:15:11.559686" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:15:11.553621" elapsed="0.006119"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:15:11.560889" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:15:11.560187" elapsed="0.000894"/>
</kw>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:11.561807" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:15:11.561428" elapsed="0.001165">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Should Contain X Times" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${element}</arg>
<arg>${expected_count}</arg>
<doc>Fails if the `container` does not contain the `item` `count` times.</doc>
<status status="NOT RUN" start="2026-10-20T23:15:11.562951" elapsed="0.000067"/>
</kw>
<arg>${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>"link-down":false</arg>
<arg>8</arg>
<doc>A GET is made to the specified ${URI} and the specific count of a
given element is done (as supplied by ${element} and ${expected_count})</doc>
<status status="FAIL" start="2026-10-20T23:15:11.552723" elapsed="0.010494">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Specific Number Of Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:13.577651" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:15:13.577774" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:15:13.578011" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:15:13.571433" elapsed="0.006663"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:15:13.579449" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:15:13.578667" elapsed="0.000898"/>
</kw>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:13.580297" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:15:13.579879" elapsed="0.001214">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Should Contain X Times" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${element}</arg>
<arg>${expected_count}</arg>
<doc>Fails if the `container` does not contain the `item` `count` times.</doc>
<status status="NOT RUN" start="2026-10-20T23:15:13.581487" elapsed="0.000046"/>
</kw>
<arg>${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>"link-down":false</arg>
<arg>8</arg>
<doc>A GET is made to the specified ${URI} and the specific count of a
given element is done (as supplied by ${element} and ${expected_count})</doc>
<status status="FAIL" start="2026-10-20T23:15:13.570469" elapsed="0.011267">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Specific Number Of Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:15.595483" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:15:15.595602" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:15:15.595814" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:15:15.589617" elapsed="0.006252"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:15:15.597049" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:15:15.596356" elapsed="0.000839"/>
</kw>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:15.597921" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:15:15.597541" elapsed="0.001160">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Should Contain X Times" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${element}</arg>
<arg>${expected_count}</arg>
<doc>Fails if the `container` does not contain the `item` `count` times.</doc>
<status status="NOT RUN" start="2026-10-20T23:15:15.599061" elapsed="0.000069"/>
</kw>
<arg>${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>"link-down":false</arg>
<arg>8</arg>
<doc>A GET is made to the specified ${URI} and the specific count of a
given element is done (as supplied by ${element} and ${expected_count})</doc>
<status status="FAIL" start="2026-10-20T23:15:15.588671" elapsed="0.010691">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Specific Number Of Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:17.613024" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:15:17.613141" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:15:17.613413" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:15:17.607166" elapsed="0.006309"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:15:17.614753" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:15:17.614000" elapsed="0.000868"/>
</kw>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:17.615639" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:15:17.615220" elapsed="0.001204">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Should Contain X Times" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${element}</arg>
<arg>${expected_count}</arg>
<doc>Fails if the `container` does not contain the `item` `count` times.</doc>
<status status="NOT RUN" start="2026-10-20T23:15:17.616785" elapsed="0.000045"/>
</kw>
<arg>${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>"link-down":false</arg>
<arg>8</arg>
<doc>A GET is made to the specified ${URI} and the specific count of a
given element is done (as supplied by ${element} and ${expected_count})</doc>
<status status="FAIL" start="2026-10-20T23:15:17.606246" elapsed="0.010782">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<msg time="2026-10-20T23:15:17.617243" level="FAIL">Keyword 'Check For Specific Number Of Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</msg>
<arg>10s</arg>
<arg>2s</arg>
<arg>Check For Specific Number Of Elements At URI</arg>
<arg>${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>"link-down":false</arg>
<arg>8</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-10-20T23:15:07.511154" elapsed="10.106308">Keyword 'Check For Specific Number Of Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<doc>Check there is no link down. We have 8 ports in total: s1=2, s2=3, s3=3.</doc>
<status status="FAIL" start="2026-10-20T23:15:07.510156" elapsed="10.107619">Keyword 'Check For Specific Number Of Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</test>
<test id="s1-s2-s1-t3" name="Get node 1 inventory" line="49">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:15:17.619952" level="INFO">${list} = ['"flow-node-inventory:flow-feature-capability-flow-stats"', '"flow-node-inventory:flow-feature-capability-table-stats"', '"flow-node-inventory:flow-feature-capability-port-stats"', '"flow-node-invent...</msg>
<var>${list}</var>
<arg>@{SW_CAPABILITIES}</arg>
<arg>${SW_VENDOR}</arg>
<arg>${SW_IPADDRESS}</arg>
<arg>${SW_HARDWARE}</arg>
<arg>openflow:1:1</arg>
<arg>openflow:1:2</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:15:17.619094" elapsed="0.000917"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:17.632067" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:15:17.632202" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:15:17.632444" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:15:17.627057" elapsed="0.005446"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:15:17.633238" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:15:17.632672" elapsed="0.000715"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:15:17.634476" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:15:17.633798" elapsed="0.000794"/>
</kw>
<status status="PASS" start="2026-10-20T23:15:17.633444" elapsed="0.001218"/>
</branch>
<status status="PASS" start="2026-10-20T23:15:17.632627" elapsed="0.002081"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:17.635411" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:15:17.635001" elapsed="0.001089">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:15:17.636756" elapsed="0.000046"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:15:17.636465" elapsed="0.000410"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:15:17.636251" elapsed="0.000681"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:15:17.626078" elapsed="0.011041">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:19.649617" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:15:19.649736" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:15:19.649952" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:15:19.643574" elapsed="0.006432"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:15:19.650816" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:15:19.650187" elapsed="0.000752"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:15:19.652079" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:15:19.651408" elapsed="0.000787"/>
</kw>
<status status="PASS" start="2026-10-20T23:15:19.650994" elapsed="0.001298"/>
</branch>
<status status="PASS" start="2026-10-20T23:15:19.650142" elapsed="0.002227"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:19.653049" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:15:19.652664" elapsed="0.001171">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:15:19.654438" elapsed="0.000048"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:15:19.654095" elapsed="0.000463"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:15:19.653975" elapsed="0.000640"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:15:19.642453" elapsed="0.012353">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:21.666962" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:15:21.667082" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:15:21.667351" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:15:21.661015" elapsed="0.006395"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:15:21.668176" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:15:21.667594" elapsed="0.000758"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:15:21.669492" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:15:21.668770" elapsed="0.000930"/>
</kw>
<status status="PASS" start="2026-10-20T23:15:21.668412" elapsed="0.001361"/>
</branch>
<status status="PASS" start="2026-10-20T23:15:21.667548" elapsed="0.002270"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:21.670559" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:15:21.670119" elapsed="0.001667">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:15:21.672434" elapsed="0.000050"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:15:21.672049" elapsed="0.000510"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:15:21.671927" elapsed="0.000689"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:15:21.659898" elapsed="0.012912">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:23.685441" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:15:23.685563" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:15:23.685781" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:15:23.679213" elapsed="0.006623"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:15:23.686668" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:15:23.686026" elapsed="0.000762"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:15:23.687931" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:15:23.687202" elapsed="0.000845"/>
</kw>
<status status="PASS" start="2026-10-20T23:15:23.686844" elapsed="0.001276"/>
</branch>
<status status="PASS" start="2026-10-20T23:15:23.685979" elapsed="0.002188"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:23.688967" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:15:23.688578" elapsed="0.001171">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:15:23.690355" elapsed="0.000052"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:15:23.690011" elapsed="0.000471"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:15:23.689891" elapsed="0.000647"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:15:23.678088" elapsed="0.012642">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:25.703091" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:15:25.703224" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:15:25.703602" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:15:25.697019" elapsed="0.006639"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:15:25.704546" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:15:25.703838" elapsed="0.000827"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:15:25.705792" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:15:25.705084" elapsed="0.000822"/>
</kw>
<status status="PASS" start="2026-10-20T23:15:25.704719" elapsed="0.001269"/>
</branch>
<status status="PASS" start="2026-10-20T23:15:25.703793" elapsed="0.002248"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:25.706794" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:15:25.706391" elapsed="0.001181">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:15:25.708120" elapsed="0.000044"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:15:25.707828" elapsed="0.000409"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:15:25.707712" elapsed="0.000580"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:15:25.695903" elapsed="0.012626">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:27.720853" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:15:27.720973" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:15:27.721201" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:15:27.715000" elapsed="0.006257"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:15:27.722058" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:15:27.721494" elapsed="0.000684"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:15:27.723335" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:15:27.722646" elapsed="0.000809"/>
</kw>
<status status="PASS" start="2026-10-20T23:15:27.722233" elapsed="0.001315"/>
</branch>
<status status="PASS" start="2026-10-20T23:15:27.721428" elapsed="0.002165"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:27.724265" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:15:27.723890" elapsed="0.001148">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:15:27.725673" elapsed="0.000046"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:15:27.725294" elapsed="0.000499"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:15:27.725177" elapsed="0.000672"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:15:27.713938" elapsed="0.012100">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<msg time="2026-10-20T23:15:27.726338" level="FAIL">Keyword 'Check For Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<arg>10s</arg>
<arg>2s</arg>
<arg>Check For Elements At URI</arg>
<arg>${RFC8040_NODES_API}/node=openflow%3A1?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-10-20T23:15:17.620453" elapsed="10.106124">Keyword 'Check For Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<doc>Get the inventory for a node</doc>
<status status="FAIL" start="2026-10-20T23:15:17.618196" elapsed="10.108701">Keyword 'Check For Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</status>
</test>
<test id="s1-s2-s1-t4" name="Get node 2 inventory" line="60">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:15:27.729060" level="INFO">${list} = ['"flow-node-inventory:flow-feature-capability-flow-stats"', '"flow-node-inventory:flow-feature-capability-table-stats"', '"flow-node-inventory:flow-feature-capability-port-stats"', '"flow-node-invent...</msg>
<var>${list}</var>
<arg>@{SW_CAPABILITIES}</arg>
<arg>${SW_VENDOR}</arg>
<arg>${SW_IPADDRESS}</arg>
<arg>${SW_HARDWARE}</arg>
<arg>openflow:2:1</arg>
<arg>openflow:2:2</arg>
<arg>openflow:2:3</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:15:27.728117" elapsed="0.001005"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:27.741731" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:15:27.741840" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:15:27.742041" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:15:27.736081" elapsed="0.006013"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:15:27.742857" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:15:27.742254" elapsed="0.000721"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:15:27.744105" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:15:27.743452" elapsed="0.000765"/>
</kw>
<status status="PASS" start="2026-10-20T23:15:27.743027" elapsed="0.001260"/>
</branch>
<status status="PASS" start="2026-10-20T23:15:27.742214" elapsed="0.002150"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:27.745038" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:15:27.744679" elapsed="0.001084">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:15:27.746287" elapsed="0.000087"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:15:27.746009" elapsed="0.000438"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:15:27.745899" elapsed="0.000621"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A2?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:15:27.735010" elapsed="0.011692">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:29.759195" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:15:29.759352" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:15:29.759706" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:15:29.753243" elapsed="0.006520"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:15:29.760567" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:15:29.759946" elapsed="0.000743"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:15:29.761819" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:15:29.761099" elapsed="0.000837"/>
</kw>
<status status="PASS" start="2026-10-20T23:15:29.760745" elapsed="0.001263"/>
</branch>
<status status="PASS" start="2026-10-20T23:15:29.759901" elapsed="0.002152"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:29.762788" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:15:29.762383" elapsed="0.001184">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:15:29.764128" elapsed="0.000045"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:15:29.763831" elapsed="0.000415"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:15:29.763712" elapsed="0.000590"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A2?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:15:29.752165" elapsed="0.012385">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:31.776581" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:15:31.776724" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:15:31.776937" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:15:31.770461" elapsed="0.006531"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:15:31.777810" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:15:31.777173" elapsed="0.000758"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:15:31.779063" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:15:31.778381" elapsed="0.000795"/>
</kw>
<status status="PASS" start="2026-10-20T23:15:31.777986" elapsed="0.001259"/>
</branch>
<status status="PASS" start="2026-10-20T23:15:31.777128" elapsed="0.002162"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:31.780009" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:15:31.779635" elapsed="0.001164">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:15:31.781377" elapsed="0.000045"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:15:31.781055" elapsed="0.000440"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:15:31.780937" elapsed="0.000612"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A2?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:15:31.769385" elapsed="0.012370">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:33.794119" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:15:33.794236" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:15:33.794494" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:15:33.787927" elapsed="0.006624"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:15:33.795356" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:15:33.794754" elapsed="0.000726"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:15:33.796625" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:15:33.795923" elapsed="0.000839"/>
</kw>
<status status="PASS" start="2026-10-20T23:15:33.795537" elapsed="0.001297"/>
</branch>
<status status="PASS" start="2026-10-20T23:15:33.794707" elapsed="0.002172"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:33.797586" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:15:33.797172" elapsed="0.001227">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:15:33.798974" elapsed="0.000055"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:15:33.798678" elapsed="0.000424"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:15:33.798540" elapsed="0.000619"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A2?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:15:33.786857" elapsed="0.012519">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:35.814217" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:15:35.814386" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:15:35.814631" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:15:35.808226" elapsed="0.006462"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:15:35.815501" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:15:35.814903" elapsed="0.000720"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:15:35.816794" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:15:35.816062" elapsed="0.000851"/>
</kw>
<status status="PASS" start="2026-10-20T23:15:35.815678" elapsed="0.001305"/>
</branch>
<status status="PASS" start="2026-10-20T23:15:35.814855" elapsed="0.002261"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:35.817858" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:15:35.817452" elapsed="0.001173">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:15:35.819198" elapsed="0.000044"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:15:35.818906" elapsed="0.000438"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:15:35.818786" elapsed="0.000616"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A2?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:15:35.807147" elapsed="0.012443">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:37.832120" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:15:37.832239" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:15:37.832501" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:15:37.825687" elapsed="0.006870"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:15:37.833356" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:15:37.832741" elapsed="0.000740"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:15:37.834635" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:15:37.833935" elapsed="0.000817"/>
</kw>
<status status="PASS" start="2026-10-20T23:15:37.833536" elapsed="0.001311"/>
</branch>
<status status="PASS" start="2026-10-20T23:15:37.832694" elapsed="0.002200"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:37.835605" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:15:37.835191" elapsed="0.001198">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:15:37.836970" elapsed="0.000046"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:15:37.836647" elapsed="0.000442"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:15:37.836530" elapsed="0.000615"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A2?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:15:37.824597" elapsed="0.012766">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<msg time="2026-10-20T23:15:37.837549" level="FAIL">Keyword 'Check For Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</msg>
<arg>10s</arg>
<arg>2s</arg>
<arg>Check For Elements At URI</arg>
<arg>${RFC8040_NODES_API}/node=openflow%3A2?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-10-20T23:15:27.729670" elapsed="10.108065">Keyword 'Check For Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<doc>Get the inventory for a node</doc>
<status status="FAIL" start="2026-10-20T23:15:27.727291" elapsed="10.110769">Keyword 'Check For Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</status>
</test>
<test id="s1-s2-s1-t5" name="Get node 3 inventory" line="71">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:15:37.840462" level="INFO">${list} = ['"flow-node-inventory:flow-feature-capability-flow-stats"', '"flow-node-inventory:flow-feature-capability-table-stats"', '"flow-node-inventory:flow-feature-capability-port-stats"', '"flow-node-invent...</msg>
<var>${list}</var>
<arg>@{SW_CAPABILITIES}</arg>
<arg>${SW_VENDOR}</arg>
<arg>${SW_IPADDRESS}</arg>
<arg>${SW_HARDWARE}</arg>
<arg>openflow:3:1</arg>
<arg>openflow:3:2</arg>
<arg>openflow:3:3</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:15:37.839605" elapsed="0.000916"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:37.883973" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:15:37.884047" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:15:37.884194" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:15:37.879897" elapsed="0.004332"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:15:37.884765" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:15:37.884378" elapsed="0.000481"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:15:37.885569" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:15:37.885115" elapsed="0.000527"/>
</kw>
<status status="PASS" start="2026-10-20T23:15:37.884895" elapsed="0.000791"/>
</branch>
<status status="PASS" start="2026-10-20T23:15:37.884348" elapsed="0.001366"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:37.886162" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:15:37.885916" elapsed="0.000747">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:15:37.887032" elapsed="0.000028"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:15:37.886850" elapsed="0.000255"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:15:37.886756" elapsed="0.000383"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A3?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:15:37.879174" elapsed="0.008086">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:39.899707" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:15:39.899826" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:15:39.900063" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:15:39.893421" elapsed="0.006697"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:15:39.900939" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:15:39.900302" elapsed="0.000760"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:15:39.902194" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:15:39.901506" elapsed="0.000929"/>
</kw>
<status status="PASS" start="2026-10-20T23:15:39.901116" elapsed="0.001393"/>
</branch>
<status status="PASS" start="2026-10-20T23:15:39.900256" elapsed="0.002299"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:39.903265" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:15:39.902851" elapsed="0.001207">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:15:39.904659" elapsed="0.000045"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:15:39.904355" elapsed="0.000424"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:15:39.904201" elapsed="0.000633"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A3?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:15:39.892240" elapsed="0.012809">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:41.918217" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:15:41.918387" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:15:41.918639" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:15:41.911755" elapsed="0.006939"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:15:41.919513" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:15:41.918878" elapsed="0.000759"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:15:41.920770" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:15:41.920066" elapsed="0.000819"/>
</kw>
<status status="PASS" start="2026-10-20T23:15:41.919692" elapsed="0.001298"/>
</branch>
<status status="PASS" start="2026-10-20T23:15:41.918832" elapsed="0.002205"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:41.921754" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:15:41.921368" elapsed="0.001168">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:15:41.923118" elapsed="0.000046"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:15:41.922797" elapsed="0.000441"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:15:41.922678" elapsed="0.000616"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A3?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:15:41.910671" elapsed="0.012847">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:43.935646" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:15:43.935766" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:15:43.936089" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:15:43.929579" elapsed="0.006568"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:15:43.936924" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:15:43.936360" elapsed="0.000712"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:15:43.938235" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:15:43.937548" elapsed="0.000840"/>
</kw>
<status status="PASS" start="2026-10-20T23:15:43.937127" elapsed="0.001334"/>
</branch>
<status status="PASS" start="2026-10-20T23:15:43.936284" elapsed="0.002223"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:43.939214" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:15:43.938805" elapsed="0.001179">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:15:43.940605" elapsed="0.000046"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:15:43.940274" elapsed="0.000452"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:15:43.940151" elapsed="0.000630"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A3?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:15:43.928502" elapsed="0.012471">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:45.952919" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:15:45.953036" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:15:45.953270" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:15:45.946712" elapsed="0.006650"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:15:45.954115" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:15:45.953543" elapsed="0.000693"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:15:45.955378" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:15:45.954683" elapsed="0.000812"/>
</kw>
<status status="PASS" start="2026-10-20T23:15:45.954291" elapsed="0.001274"/>
</branch>
<status status="PASS" start="2026-10-20T23:15:45.953499" elapsed="0.002111"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:45.956300" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:15:45.955904" elapsed="0.001606">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:15:45.958088" elapsed="0.000048"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:15:45.957771" elapsed="0.000438"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:15:45.957653" elapsed="0.000610"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A3?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:15:45.945698" elapsed="0.012786">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:47.972041" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:15:47.972208" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:15:47.972485" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:15:47.965399" elapsed="0.007145"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:15:47.973435" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:15:47.972754" elapsed="0.000805"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:15:47.974775" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:15:47.973984" elapsed="0.000912"/>
</kw>
<status status="PASS" start="2026-10-20T23:15:47.973616" elapsed="0.001354"/>
</branch>
<status status="PASS" start="2026-10-20T23:15:47.972701" elapsed="0.002314"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:47.975792" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:15:47.975372" elapsed="0.001316">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:15:47.977345" elapsed="0.000050"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:15:47.976971" elapsed="0.000500"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:15:47.976842" elapsed="0.000685"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A3?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:15:47.964085" elapsed="0.013646">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</status>
</kw>
<msg time="2026-10-20T23:15:47.977929" level="FAIL">Keyword 'Check For Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</msg>
<arg>10s</arg>
<arg>2s</arg>
<arg>Check For Elements At URI</arg>
<arg>${RFC8040_NODES_API}/node=openflow%3A3?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-10-20T23:15:37.841069" elapsed="10.137081">Keyword 'Check For Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</status>
</kw>
<doc>Get the inventory for a node</doc>
<status status="FAIL" start="2026-10-20T23:15:37.838723" elapsed="10.139801">Keyword 'Check For Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</status>
</test>
<test id="s1-s2-s1-t6" name="Link Down" line="82">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-20T23:15:47.983923" level="INFO">link s1 s2 down</msg>
<arg>link s1 s2 down</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-10-20T23:15:47.980279" elapsed="0.003767"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-10-20T23:15:47.988642" level="INFO">mininet&gt;</msg>
<arg>mininet&gt;</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-10-20T23:15:47.984434" elapsed="0.004326"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:15:47.989779" level="INFO">@{list} = [ "link-down":true ]</msg>
<var>@{list}</var>
<arg>"link-down":true</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:15:47.989065" elapsed="0.000772"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:48.002949" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:15:48.003063" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '452'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:15:48.003461" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:15:47.996629" elapsed="0.006889"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:15:48.004267" elapsed="0.000108"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:15:48.003687" elapsed="0.000773"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:15:48.005567" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:15:48.004881" elapsed="0.000803"/>
</kw>
<status status="PASS" start="2026-10-20T23:15:48.004519" elapsed="0.001236"/>
</branch>
<status status="PASS" start="2026-10-20T23:15:48.003645" elapsed="0.002155"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:48.006526" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:15:48.006095" elapsed="0.001154">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:15:48.007827" elapsed="0.000045"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:15:48.007541" elapsed="0.000405"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:15:48.007422" elapsed="0.000580"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/node-connector=openflow%3A1%3A1?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:15:47.995615" elapsed="0.012599">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:50.021396" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:15:50.021522" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '452'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:15:50.021759" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:15:50.014820" elapsed="0.006996"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:15:50.022631" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:15:50.022002" elapsed="0.000751"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:15:50.023924" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:15:50.023178" elapsed="0.000861"/>
</kw>
<status status="PASS" start="2026-10-20T23:15:50.022810" elapsed="0.001301"/>
</branch>
<status status="PASS" start="2026-10-20T23:15:50.021955" elapsed="0.002202"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:50.024972" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:15:50.024545" elapsed="0.001284">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:15:50.026448" elapsed="0.000046"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:15:50.026091" elapsed="0.000477"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:15:50.025971" elapsed="0.000652"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/node-connector=openflow%3A1%3A1?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:15:50.013723" elapsed="0.013089">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:52.041084" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:15:52.041223" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '452'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:15:52.041523" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:15:52.033997" elapsed="0.007584"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:15:52.042495" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:15:52.041817" elapsed="0.000804"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:15:52.043877" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:15:52.043061" elapsed="0.000934"/>
</kw>
<status status="PASS" start="2026-10-20T23:15:52.042687" elapsed="0.001380"/>
</branch>
<status status="PASS" start="2026-10-20T23:15:52.041754" elapsed="0.002359"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:52.044910" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:15:52.044469" elapsed="0.001335">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:15:52.046498" elapsed="0.000048"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:15:52.046112" elapsed="0.000506"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:15:52.045967" elapsed="0.000711"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/node-connector=openflow%3A1%3A1?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:15:52.032644" elapsed="0.014256">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:54.059711" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:15:54.059833" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '452'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:15:54.060050" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:15:54.053140" elapsed="0.006964"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:15:54.060915" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:15:54.060292" elapsed="0.000747"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:15:54.062171" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:15:54.061501" elapsed="0.000939"/>
</kw>
<status status="PASS" start="2026-10-20T23:15:54.061093" elapsed="0.001423"/>
</branch>
<status status="PASS" start="2026-10-20T23:15:54.060245" elapsed="0.002317"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:54.063735" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:15:54.062862" elapsed="0.001668">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:15:54.065095" elapsed="0.000047"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:15:54.064796" elapsed="0.000420"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:15:54.064676" elapsed="0.000596"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/node-connector=openflow%3A1%3A1?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:15:54.051991" elapsed="0.013527">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:56.077808" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:15:56.077927" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '452'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:15:56.078136" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:15:56.071440" elapsed="0.006749"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:15:56.078962" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:15:56.078393" elapsed="0.000688"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:15:56.080195" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:15:56.079543" elapsed="0.000795"/>
</kw>
<status status="PASS" start="2026-10-20T23:15:56.079136" elapsed="0.001299"/>
</branch>
<status status="PASS" start="2026-10-20T23:15:56.078348" elapsed="0.002134"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:56.081146" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:15:56.080778" elapsed="0.001118">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:15:56.082502" elapsed="0.000048"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:15:56.082157" elapsed="0.000468"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:15:56.082040" elapsed="0.000640"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/node-connector=openflow%3A1%3A1?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:15:56.070427" elapsed="0.012437">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:58.094639" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:15:58.094757" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '452'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:15:58.095047" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:15:58.088552" elapsed="0.006551"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:15:58.095874" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:15:58.095273" elapsed="0.000722"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:15:58.097111" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:15:58.096439" elapsed="0.000788"/>
</kw>
<status status="PASS" start="2026-10-20T23:15:58.096049" elapsed="0.001249"/>
</branch>
<status status="PASS" start="2026-10-20T23:15:58.095230" elapsed="0.002145"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:58.098070" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:15:58.097696" elapsed="0.001129">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:15:58.099401" elapsed="0.000047"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:15:58.099082" elapsed="0.000464"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:15:58.098967" elapsed="0.000635"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/node-connector=openflow%3A1%3A1?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:15:58.087553" elapsed="0.012235">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<msg time="2026-10-20T23:15:58.099974" level="FAIL">Keyword 'Check For Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</msg>
<arg>10s</arg>
<arg>2s</arg>
<arg>Check For Elements At URI</arg>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/node-connector=openflow%3A1%3A1?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-10-20T23:15:47.990248" elapsed="10.109915">Keyword 'Check For Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>10s</arg>
<arg>2s</arg>
<arg>Check For Elements At URI</arg>
<arg>${RFC8040_NODES_API}/node=openflow%3A2/node-connector=openflow%3A2%3A3?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-10-20T23:15:58.100631" elapsed="0.000046"/>
</kw>
<doc>Take link s1-s2 down</doc>
<status status="FAIL" start="2026-10-20T23:15:47.979349" elapsed="10.121625">Keyword 'Check For Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</status>
</test>
<test id="s1-s2-s1-t7" name="Link Up" line="100">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-20T23:15:58.106071" level="INFO">link s1 s2 up</msg>
<arg>link s1 s2 up</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-10-20T23:15:58.103568" elapsed="0.002621"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-10-20T23:15:58.109524" level="INFO">mininet&gt;</msg>
<arg>mininet&gt;</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-10-20T23:15:58.106571" elapsed="0.003065"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:15:58.110584" level="INFO">@{list} = [ "link-down":false ]</msg>
<var>@{list}</var>
<arg>"link-down":false</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:15:58.109931" elapsed="0.000710"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:58.126980" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:15:58.127089" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '452'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:15:58.127289" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:15:58.117572" elapsed="0.009816"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:15:58.128177" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:15:58.127641" elapsed="0.000652"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:15:58.129411" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:15:58.128756" elapsed="0.000794"/>
</kw>
<status status="PASS" start="2026-10-20T23:15:58.128380" elapsed="0.001242"/>
</branch>
<status status="PASS" start="2026-10-20T23:15:58.127598" elapsed="0.002069"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:15:58.130353" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:15:58.129963" elapsed="0.001079">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:15:58.131626" elapsed="0.000046"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:15:58.131294" elapsed="0.000451"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:15:58.131180" elapsed="0.000618"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/node-connector=openflow%3A1%3A1?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:15:58.116612" elapsed="0.015368">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:16:00.144679" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:16:00.144802" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '452'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:16:00.145016" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:16:00.138148" elapsed="0.006925"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:16:00.145918" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:16:00.145260" elapsed="0.000780"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:16:00.147190" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:16:00.146488" elapsed="0.000846"/>
</kw>
<status status="PASS" start="2026-10-20T23:16:00.146096" elapsed="0.001314"/>
</branch>
<status status="PASS" start="2026-10-20T23:16:00.145212" elapsed="0.002244"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:16:00.148166" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:16:00.147775" elapsed="0.001187">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:00.149573" elapsed="0.000048"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:16:00.149226" elapsed="0.000468"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:16:00.149107" elapsed="0.000644"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/node-connector=openflow%3A1%3A1?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:16:00.137051" elapsed="0.012891">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:16:02.163741" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:16:02.163866" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '452'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:16:02.164086" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:16:02.156254" elapsed="0.007888"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:16:02.164970" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:16:02.164370" elapsed="0.000721"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:16:02.166748" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:16:02.165537" elapsed="0.001333"/>
</kw>
<status status="PASS" start="2026-10-20T23:16:02.165146" elapsed="0.001800"/>
</branch>
<status status="PASS" start="2026-10-20T23:16:02.164286" elapsed="0.002706"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:16:02.167736" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:16:02.167293" elapsed="0.001214">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:02.169091" elapsed="0.000045"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:16:02.168797" elapsed="0.000415"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:16:02.168674" elapsed="0.000595"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/node-connector=openflow%3A1%3A1?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:16:02.155106" elapsed="0.014390">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:16:04.181918" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:16:04.182038" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '452'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:16:04.182251" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:16:04.175731" elapsed="0.006605"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:16:04.183113" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:16:04.182527" elapsed="0.000705"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:16:04.184405" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:16:04.183684" elapsed="0.000933"/>
</kw>
<status status="PASS" start="2026-10-20T23:16:04.183287" elapsed="0.001426"/>
</branch>
<status status="PASS" start="2026-10-20T23:16:04.182480" elapsed="0.002282"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:16:04.185483" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:16:04.185062" elapsed="0.001178">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:04.186852" elapsed="0.000047"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:16:04.186534" elapsed="0.000439"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:16:04.186415" elapsed="0.000614"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/node-connector=openflow%3A1%3A1?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:16:04.174598" elapsed="0.012622">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:16:06.200120" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:16:06.200244" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '452'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:16:06.200503" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:16:06.193432" elapsed="0.007127"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:16:06.201365" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:16:06.200743" elapsed="0.000746"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:16:06.202625" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:16:06.201924" elapsed="0.000820"/>
</kw>
<status status="PASS" start="2026-10-20T23:16:06.201542" elapsed="0.001303"/>
</branch>
<status status="PASS" start="2026-10-20T23:16:06.200697" elapsed="0.002194"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:16:06.203603" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:16:06.203186" elapsed="0.001204">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:06.204970" elapsed="0.000046"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:16:06.204654" elapsed="0.000437"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:16:06.204535" elapsed="0.000611"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/node-connector=openflow%3A1%3A1?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:16:06.192332" elapsed="0.013035">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:16:08.218046" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:16:08.218168" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '452'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:16:08.218541" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:16:08.212017" elapsed="0.006582"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:16:08.219486" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:16:08.218785" elapsed="0.000823"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:16:08.220812" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:16:08.220077" elapsed="0.000877"/>
</kw>
<status status="PASS" start="2026-10-20T23:16:08.219664" elapsed="0.001362"/>
</branch>
<status status="PASS" start="2026-10-20T23:16:08.218738" elapsed="0.002334"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:16:08.222035" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:16:08.221597" elapsed="0.001210">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:08.223419" elapsed="0.000047"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:16:08.223094" elapsed="0.000448"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:16:08.222973" elapsed="0.000624"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/node-connector=openflow%3A1%3A1?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:16:08.210903" elapsed="0.012883">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<msg time="2026-10-20T23:16:08.223998" level="FAIL">Keyword 'Check For Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</msg>
<arg>10s</arg>
<arg>2s</arg>
<arg>Check For Elements At URI</arg>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/node-connector=openflow%3A1%3A1?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-10-20T23:15:58.111001" elapsed="10.113188">Keyword 'Check For Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>10s</arg>
<arg>2s</arg>
<arg>Check For Elements At URI</arg>
<arg>${RFC8040_NODES_API}/node=openflow%3A2/node-connector=openflow%3A2%3A3?${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>${list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:08.224642" elapsed="0.000047"/>
</kw>
<doc>Take link s1-s2 up</doc>
<status status="FAIL" start="2026-10-20T23:15:58.101991" elapsed="10.123007">Keyword 'Check For Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A1?content=nonconfig Expected status: 404 != 200</status>
</test>
<kw name="Delete All Sessions" owner="RequestsLibrary" type="TEARDOWN">
<msg time="2026-10-20T23:16:08.226457" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects </doc>
<status status="PASS" start="2026-10-20T23:16:08.226259" elapsed="0.000333"/>
</kw>
<doc>Test suite for RESTCONF inventory</doc>
<status status="FAIL" start="2026-10-20T23:14:57.397359" elapsed="70.829301"/>
</suite>
<suite id="s1-s2-s2" name="020 Restconf Topology" source="/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/MD_SAL_NSF_OF13/020_restconf_topology.robot">
<kw name="Create Session" owner="RequestsLibrary" type="SETUP">
<msg time="2026-10-20T23:16:08.255086" level="INFO">Creating Session using : alias=session, url=http://10.30.170.223:8181, headers={'Content-Type': 'application/json'},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x756aa57b2c90&gt;, timeout=None, proxies=None, verify=False,                     debug=0 </msg>
<arg>session</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>headers=${HEADERS}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-10-20T23:16:08.254501" elapsed="0.000788"/>
</kw>
<test id="s1-s2-s2-t1" name="Get RESTCONF Topology" line="20">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:16:08.266234" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:16:08.266359" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:16:08.266487" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:16:08.259678" elapsed="0.006893"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:16:08.267034" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:16:08.266679" elapsed="0.000430"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:16:08.267906" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:16:08.267490" elapsed="0.000489"/>
</kw>
<status status="PASS" start="2026-10-20T23:16:08.267141" elapsed="0.000884"/>
</branch>
<status status="PASS" start="2026-10-20T23:16:08.266652" elapsed="0.001401"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:16:08.268767" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:16:08.268239" elapsed="0.000973">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:08.269574" elapsed="0.000028"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:16:08.269395" elapsed="0.000253"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:16:08.269301" elapsed="0.000381"/>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${node_list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:16:08.259175" elapsed="0.010623">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:16:10.281515" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:16:10.281631" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:16:10.281846" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:16:10.275685" elapsed="0.006242"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:16:10.282745" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:16:10.282113" elapsed="0.000780"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:16:10.284042" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:16:10.283349" elapsed="0.000809"/>
</kw>
<status status="PASS" start="2026-10-20T23:16:10.282950" elapsed="0.001280"/>
</branch>
<status status="PASS" start="2026-10-20T23:16:10.282066" elapsed="0.002209"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:16:10.285010" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:16:10.284608" elapsed="0.001162">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:10.286389" elapsed="0.000048"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:16:10.286059" elapsed="0.000452"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:16:10.285938" elapsed="0.000628"/>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${node_list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:16:10.274707" elapsed="0.012049">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:16:12.298612" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:16:12.298837" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:16:12.299088" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:16:12.292647" elapsed="0.006497"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:16:12.299953" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:16:12.299361" elapsed="0.000714"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:16:12.301337" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:16:12.300526" elapsed="0.000934"/>
</kw>
<status status="PASS" start="2026-10-20T23:16:12.300131" elapsed="0.001405"/>
</branch>
<status status="PASS" start="2026-10-20T23:16:12.299284" elapsed="0.002298"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:16:12.302294" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:16:12.301910" elapsed="0.001174">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:12.303678" elapsed="0.000047"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:16:12.303378" elapsed="0.000421"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:16:12.303228" elapsed="0.000649"/>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${node_list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:16:12.291682" elapsed="0.012389">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:16:14.316350" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:16:14.316479" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:16:14.316713" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:16:14.310438" elapsed="0.006330"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:16:14.317584" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:16:14.316984" elapsed="0.000719"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:16:14.318876" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:16:14.318141" elapsed="0.000854"/>
</kw>
<status status="PASS" start="2026-10-20T23:16:14.317760" elapsed="0.001307"/>
</branch>
<status status="PASS" start="2026-10-20T23:16:14.316936" elapsed="0.002177"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:16:14.319827" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:16:14.319441" elapsed="0.001189">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:14.321216" elapsed="0.000045"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:16:14.320917" elapsed="0.000535"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:16:14.320773" elapsed="0.000740"/>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${node_list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:16:14.309497" elapsed="0.012213">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:16:16.333913" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:16:16.334034" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:16:16.334249" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:16:16.327700" elapsed="0.006641"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:16:16.335126" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:16:16.334531" elapsed="0.000717"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:16:16.336439" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:16:16.335708" elapsed="0.000848"/>
</kw>
<status status="PASS" start="2026-10-20T23:16:16.335303" elapsed="0.001325"/>
</branch>
<status status="PASS" start="2026-10-20T23:16:16.334484" elapsed="0.002190"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:16:16.337411" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:16:16.336995" elapsed="0.001166">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:16.338749" elapsed="0.000045"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:16:16.338454" elapsed="0.000437"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:16:16.338305" elapsed="0.000642"/>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${node_list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:16:16.326736" elapsed="0.012402">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:16:18.351072" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:16:18.351192" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:16:18.351446" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:16:18.345020" elapsed="0.006488"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:16:18.352282" elapsed="0.000088"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:16:18.351695" elapsed="0.000743"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:16:18.353604" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:16:18.352894" elapsed="0.000932"/>
</kw>
<status status="PASS" start="2026-10-20T23:16:18.352493" elapsed="0.001441"/>
</branch>
<status status="PASS" start="2026-10-20T23:16:18.351650" elapsed="0.002333"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:16:18.354710" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:16:18.354288" elapsed="0.001214">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:18.356549" elapsed="0.000050"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:16:18.355765" elapsed="0.000913"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:16:18.355646" elapsed="0.001091"/>
</for>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${node_list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:16:18.344039" elapsed="0.012918">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<msg time="2026-10-20T23:16:18.357152" level="FAIL">Keyword 'Check For Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</msg>
<arg>10s</arg>
<arg>2s</arg>
<arg>Check For Elements At URI</arg>
<arg>${RFC8040_OPERATIONAL_TOPO_API}</arg>
<arg>${node_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-10-20T23:16:08.256011" elapsed="10.101371">Keyword 'Check For Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_API}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:18.357717" elapsed="0.000046"/>
</kw>
<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-10-20T23:16:18.358173" elapsed="0.000044"/>
</kw>
<doc>Get RESTCONF Topology and validate the result.</doc>
<status status="FAIL" start="2026-10-20T23:16:08.255403" elapsed="10.103132">Keyword 'Check For Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</test>
<test id="s1-s2-s2-t2" name="List all the links" line="31">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:16:18.360921" level="INFO">${body1} = {'dest-node': 'openflow:1', 'dest-tp': 'openflow:1:2'}</msg>
<var>${body1}</var>
<arg>dest-node=openflow:1</arg>
<arg>dest-tp=openflow:1:2</arg>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:16:18.360156" elapsed="0.000824"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:16:18.362095" level="INFO">${body2} = {'source-node': 'openflow:3', 'source-tp': 'openflow:3:3'}</msg>
<var>${body2}</var>
<arg>source-node=openflow:3</arg>
<arg>source-tp=openflow:3:3</arg>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:16:18.361377" elapsed="0.000774"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:16:18.363412" level="INFO">${link2} = {'link-id': 'openflow:3:3', 'destination': {'dest-node': 'openflow:1', 'dest-tp': 'openflow:1:2'}, 'source': {'source-node': 'openflow:3', 'source-tp': 'openflow:3:3'}}</msg>
<var>${link2}</var>
<arg>link-id=openflow:3:3</arg>
<arg>destination=${body1}</arg>
<arg>source=${body2}</arg>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:16:18.362557" elapsed="0.000915"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-20T23:16:18.364564" level="INFO">${link2} = {'link-id': 'openflow:3:3', 'destination': {'dest-node': 'openflow:1', 'dest-tp': 'openflow:1:2'}, 'source': {'source-node': 'openflow:3', 'source-tp': 'openflow:3:3'}}</msg>
<arg>${link2}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-20T23:16:18.363885" elapsed="0.000771"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:16:18.365787" level="INFO">${body1} = {'dest-node': 'openflow:1', 'dest-tp': 'openflow:1:1'}</msg>
<var>${body1}</var>
<arg>dest-node=openflow:1</arg>
<arg>dest-tp=openflow:1:1</arg>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:16:18.365066" elapsed="0.000800"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:16:18.366927" level="INFO">${body2} = {'source-node': 'openflow:2', 'source-tp': 'openflow:2:3'}</msg>
<var>${body2}</var>
<arg>source-node=openflow:2</arg>
<arg>source-tp=openflow:2:3</arg>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:16:18.366233" elapsed="0.000750"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:16:18.368189" level="INFO">${link1} = {'link-id': 'openflow:2:3', 'destination': {'dest-node': 'openflow:1', 'dest-tp': 'openflow:1:1'}, 'source': {'source-node': 'openflow:2', 'source-tp': 'openflow:2:3'}}</msg>
<var>${link1}</var>
<arg>link-id=openflow:2:3</arg>
<arg>destination=${body1}</arg>
<arg>source=${body2}</arg>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:16:18.367373" elapsed="0.000874"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-20T23:16:18.369353" level="INFO">${link1} = {'link-id': 'openflow:2:3', 'destination': {'dest-node': 'openflow:1', 'dest-tp': 'openflow:1:1'}, 'source': {'source-node': 'openflow:2', 'source-tp': 'openflow:2:3'}}</msg>
<arg>${link1}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-20T23:16:18.368663" elapsed="0.000781"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:16:18.370491" level="INFO">${body1} = {'dest-node': 'openflow:3', 'dest-tp': 'openflow:3:3'}</msg>
<var>${body1}</var>
<arg>dest-node=openflow:3</arg>
<arg>dest-tp=openflow:3:3</arg>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:16:18.369792" elapsed="0.000754"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:16:18.371587" level="INFO">${body2} = {'source-node': 'openflow:1', 'source-tp': 'openflow:1:2'}</msg>
<var>${body2}</var>
<arg>source-node=openflow:1</arg>
<arg>source-tp=openflow:1:2</arg>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:16:18.370926" elapsed="0.000715"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:16:18.372814" level="INFO">${link4} = {'link-id': 'openflow:1:2', 'destination': {'dest-node': 'openflow:3', 'dest-tp': 'openflow:3:3'}, 'source': {'source-node': 'openflow:1', 'source-tp': 'openflow:1:2'}}</msg>
<var>${link4}</var>
<arg>link-id=openflow:1:2</arg>
<arg>destination=${body1}</arg>
<arg>source=${body2}</arg>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:16:18.372017" elapsed="0.000954"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-20T23:16:18.374043" level="INFO">${link4} = {'link-id': 'openflow:1:2', 'destination': {'dest-node': 'openflow:3', 'dest-tp': 'openflow:3:3'}, 'source': {'source-node': 'openflow:1', 'source-tp': 'openflow:1:2'}}</msg>
<arg>${link4}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-20T23:16:18.373393" elapsed="0.000738"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:16:18.375178" level="INFO">${body1} = {'dest-node': 'openflow:2', 'dest-tp': 'openflow:2:3'}</msg>
<var>${body1}</var>
<arg>dest-node=openflow:2</arg>
<arg>dest-tp=openflow:2:3</arg>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:16:18.374512" elapsed="0.000722"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:16:18.376287" level="INFO">${body2} = {'source-node': 'openflow:1', 'source-tp': 'openflow:1:1'}</msg>
<var>${body2}</var>
<arg>source-node=openflow:1</arg>
<arg>source-tp=openflow:1:1</arg>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:16:18.375625" elapsed="0.000747"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:16:18.377566" level="INFO">${link3} = {'link-id': 'openflow:1:1', 'destination': {'dest-node': 'openflow:2', 'dest-tp': 'openflow:2:3'}, 'source': {'source-node': 'openflow:1', 'source-tp': 'openflow:1:1'}}</msg>
<var>${link3}</var>
<arg>link-id=openflow:1:1</arg>
<arg>destination=${body1}</arg>
<arg>source=${body2}</arg>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:16:18.376735" elapsed="0.000888"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-20T23:16:18.378675" level="INFO">${link3} = {'link-id': 'openflow:1:1', 'destination': {'dest-node': 'openflow:2', 'dest-tp': 'openflow:2:3'}, 'source': {'source-node': 'openflow:1', 'source-tp': 'openflow:1:1'}}</msg>
<arg>${link3}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-20T23:16:18.378028" elapsed="0.000734"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:16:18.379820" level="INFO">${links} = [{'link-id': 'openflow:2:3', 'destination': {'dest-node': 'openflow:1', 'dest-tp': 'openflow:1:1'}, 'source': {'source-node': 'openflow:2', 'source-tp': 'openflow:2:3'}}, {'link-id': 'openflow:3:3', '...</msg>
<var>${links}</var>
<arg>${link1}</arg>
<arg>${link2}</arg>
<arg>${link3}</arg>
<arg>${link4}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:16:18.379073" elapsed="0.000827"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:16:18.387126" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:16:18.387236" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:16:18.387475" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:16:18.382035" elapsed="0.006270">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:16:18.388784" elapsed="0.000045"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:16:18.389217" elapsed="0.000050"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:18.389678" elapsed="0.000043"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:18.390036" elapsed="0.000044"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:18.390416" elapsed="0.000043"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:18.390759" elapsed="0.000039"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:18.391331" elapsed="0.000046"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:16:18.391033" elapsed="0.000415"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:16:18.390922" elapsed="0.000580"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:16:18.381388" elapsed="0.010296">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:16:20.397124" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:16:20.397249" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:16:20.397384" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:16:20.392688" elapsed="0.005133">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:16:20.398073" elapsed="0.000023"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:16:20.398273" elapsed="0.000024"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:20.398491" elapsed="0.000020"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:20.398649" elapsed="0.000019"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:20.398813" elapsed="0.000020"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:20.398985" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:20.399245" elapsed="0.000022"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:16:20.399118" elapsed="0.000181"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:16:20.399059" elapsed="0.000283"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:16:20.392216" elapsed="0.007220">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:16:22.410155" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:16:22.410346" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:16:22.410604" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:16:22.404109" elapsed="0.007408">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:16:22.412013" elapsed="0.000050"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:16:22.412470" elapsed="0.000052"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:22.412925" elapsed="0.000044"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:22.413267" elapsed="0.000068"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:22.413654" elapsed="0.000043"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:22.414019" elapsed="0.000042"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:22.414636" elapsed="0.000050"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:16:22.414287" elapsed="0.000472"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:16:22.414169" elapsed="0.000647"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:16:22.403203" elapsed="0.011832">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:16:24.424092" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:16:24.424192" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:16:24.424406" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:16:24.417354" elapsed="0.007697">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:16:24.425399" elapsed="0.000033"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:16:24.425698" elapsed="0.000044"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:24.426050" elapsed="0.000030"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:24.426271" elapsed="0.000026"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:24.426521" elapsed="0.000027"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:24.426735" elapsed="0.000026"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:24.427103" elapsed="0.000028"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:16:24.426929" elapsed="0.000246"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:16:24.426833" elapsed="0.000378"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:16:24.416167" elapsed="0.011190">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:16:26.435103" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:16:26.435226" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:16:26.435487" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:16:26.429008" elapsed="0.007390">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:16:26.436906" elapsed="0.000050"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:16:26.437361" elapsed="0.000053"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:26.437803" elapsed="0.000042"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:26.438165" elapsed="0.000042"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:26.438550" elapsed="0.000043"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:26.438914" elapsed="0.000043"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:26.439615" elapsed="0.000045"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:16:26.439297" elapsed="0.000435"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:16:26.439174" elapsed="0.000615"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:16:26.428144" elapsed="0.011859">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:16:28.448291" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:16:28.448462" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:16:28.448705" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:16:28.441660" elapsed="0.007971">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:16:28.450146" elapsed="0.000050"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:16:28.450606" elapsed="0.000052"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:28.451063" elapsed="0.000043"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:28.451435" elapsed="0.000042"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:28.451787" elapsed="0.000039"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:28.452144" elapsed="0.000041"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:28.452730" elapsed="0.000044"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:16:28.452447" elapsed="0.000396"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:16:28.452295" elapsed="0.000629"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:16:28.440775" elapsed="0.012348">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<msg time="2026-10-20T23:16:28.453296" level="FAIL">Keyword 'Verify Links' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<arg>10s</arg>
<arg>2s</arg>
<arg>Verify Links</arg>
<arg>${links}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-10-20T23:16:18.380276" elapsed="10.073245">Keyword 'Verify Links' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<doc>List all the links in the topology.</doc>
<status status="FAIL" start="2026-10-20T23:16:18.359189" elapsed="10.094643">Keyword 'Verify Links' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</test>
<test id="s1-s2-s2-t3" name="Link Down" line="52">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-20T23:16:28.459422" level="INFO">link s1 s2 down</msg>
<arg>link s1 s2 down</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-10-20T23:16:28.455379" elapsed="0.004163"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-10-20T23:16:28.485036" level="INFO">mininet&gt;</msg>
<arg>mininet&gt;</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-10-20T23:16:28.459888" elapsed="0.025259"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:16:28.486203" level="INFO">${links} = [{'link-id': 'openflow:3:3', 'destination': {'dest-node': 'openflow:1', 'dest-tp': 'openflow:1:2'}, 'source': {'source-node': 'openflow:3', 'source-tp': 'openflow:3:3'}}, {'link-id': 'openflow:1:2', '...</msg>
<var>${links}</var>
<arg>${link2}</arg>
<arg>${link4}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:16:28.485477" elapsed="0.000785"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:16:28.492807" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:16:28.492957" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:16:28.493084" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:16:28.488418" elapsed="0.005191">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:16:28.494052" elapsed="0.000046"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:16:28.494490" elapsed="0.000050"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:28.494942" elapsed="0.000043"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:28.495280" elapsed="0.000072"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:28.495668" elapsed="0.000041"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:28.496031" elapsed="0.000040"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:28.496590" elapsed="0.000044"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:16:28.496288" elapsed="0.000414"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:16:28.496176" elapsed="0.000583"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:16:28.487736" elapsed="0.009228">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:16:30.504841" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:16:30.504984" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:16:30.505200" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:16:30.498683" elapsed="0.007498">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:16:30.506762" elapsed="0.000048"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:16:30.507243" elapsed="0.000111"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:30.507763" elapsed="0.000043"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:30.508123" elapsed="0.000042"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:30.508615" elapsed="0.000052"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:30.509001" elapsed="0.000042"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:30.509580" elapsed="0.000044"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:16:30.509271" elapsed="0.000423"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:16:30.509152" elapsed="0.000598"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:16:30.497794" elapsed="0.012172">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:16:32.518265" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:16:32.518427" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:16:32.518665" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:16:32.511689" elapsed="0.007890">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:16:32.520088" elapsed="0.000050"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:16:32.520559" elapsed="0.000052"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:32.521016" elapsed="0.000043"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:32.521379" elapsed="0.000043"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:32.521734" elapsed="0.000040"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:32.522090" elapsed="0.000041"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:32.522663" elapsed="0.000043"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:16:32.522389" elapsed="0.000386"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:16:32.522242" elapsed="0.000590"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:16:32.510828" elapsed="0.012220">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:16:34.530812" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:16:34.530962" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:16:34.531180" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:16:34.524713" elapsed="0.007388">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:16:34.532615" elapsed="0.000049"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:16:34.533060" elapsed="0.000051"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:34.533529" elapsed="0.000043"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:34.533868" elapsed="0.000064"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:34.534243" elapsed="0.000041"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:34.534611" elapsed="0.000042"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:34.535277" elapsed="0.000072"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:16:34.535001" elapsed="0.000421"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:16:34.534859" elapsed="0.000621"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:16:34.523906" elapsed="0.011768">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:16:36.543407" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:16:36.543535" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:16:36.543754" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:16:36.537186" elapsed="0.007476">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:16:36.545169" elapsed="0.000049"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:16:36.545627" elapsed="0.000050"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:36.546084" elapsed="0.000043"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:36.546454" elapsed="0.000043"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:36.546809" elapsed="0.000042"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:36.547172" elapsed="0.000042"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:36.547749" elapsed="0.000044"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:16:36.547475" elapsed="0.000387"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:16:36.547355" elapsed="0.000589"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:16:36.536384" elapsed="0.011757">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:16:38.556210" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:16:38.556376" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:16:38.556599" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:16:38.549751" elapsed="0.008311">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:16:38.558583" elapsed="0.000050"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:16:38.559037" elapsed="0.000052"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:38.559502" elapsed="0.000043"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:38.559981" elapsed="0.000045"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:38.560376" elapsed="0.000044"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:38.560728" elapsed="0.000041"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:38.561296" elapsed="0.000073"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:16:38.561022" elapsed="0.000421"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:16:38.560880" elapsed="0.000621"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:16:38.548941" elapsed="0.012755">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:16:40.569494" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:16:40.569617" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:16:40.569851" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:16:40.563301" elapsed="0.007489">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:16:40.571346" elapsed="0.000050"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:16:40.571770" elapsed="0.000051"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:40.572224" elapsed="0.000042"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:40.572594" elapsed="0.000041"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:40.572969" elapsed="0.000042"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:40.573338" elapsed="0.000043"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:40.573892" elapsed="0.000064"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:16:40.573618" elapsed="0.000408"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:16:40.573498" elapsed="0.000584"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:16:40.562491" elapsed="0.011788">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:16:42.582303" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:16:42.582491" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:16:42.582713" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:16:42.576004" elapsed="0.007631">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:16:42.584240" elapsed="0.000050"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:16:42.584702" elapsed="0.000051"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:42.585160" elapsed="0.000043"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:42.585526" elapsed="0.000043"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:42.585883" elapsed="0.000061"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:42.586249" elapsed="0.000042"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:42.586829" elapsed="0.000044"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:16:42.586552" elapsed="0.000414"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:16:42.586433" elapsed="0.000590"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:16:42.575131" elapsed="0.012088">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:16:44.595651" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:16:44.595779" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:16:44.596027" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:16:44.588779" elapsed="0.008139">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:16:44.597448" elapsed="0.000049"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:16:44.597869" elapsed="0.000050"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:44.598356" elapsed="0.000044"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:44.598691" elapsed="0.000509"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:44.599558" elapsed="0.000043"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:44.599899" elapsed="0.000063"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:44.600494" elapsed="0.000045"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:16:44.600192" elapsed="0.000416"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:16:44.600074" elapsed="0.000590"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:16:44.587962" elapsed="0.012895">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:16:46.608797" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:16:46.608923" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:16:46.609275" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:16:46.602568" elapsed="0.007618">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:16:46.610703" elapsed="0.000048"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:16:46.611151" elapsed="0.000052"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:46.611618" elapsed="0.000043"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:46.611975" elapsed="0.000042"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:46.612356" elapsed="0.000042"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:46.612699" elapsed="0.000041"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:46.613265" elapsed="0.000071"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:16:46.612989" elapsed="0.000420"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:16:46.612850" elapsed="0.000616"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:16:46.601717" elapsed="0.011944">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:16:48.621129" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:16:48.621254" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:16:48.621514" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:16:48.615358" elapsed="0.007083">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:16:48.622994" elapsed="0.000055"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:16:48.623504" elapsed="0.000054"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:48.623939" elapsed="0.000065"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:48.624298" elapsed="0.000069"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:48.624676" elapsed="0.000041"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:48.625032" elapsed="0.000042"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:48.625618" elapsed="0.000045"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:16:48.625341" elapsed="0.000399"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:16:48.625188" elapsed="0.000618"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:16:48.614512" elapsed="0.011542">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:16:50.631791" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:16:50.631879" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:16:50.632135" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:16:50.627377" elapsed="0.005361">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:16:50.633106" elapsed="0.000034"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:16:50.633422" elapsed="0.000035"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:50.633700" elapsed="0.000027"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:50.633917" elapsed="0.000036"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:50.634181" elapsed="0.000027"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:50.634422" elapsed="0.000026"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:50.634832" elapsed="0.000036"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:16:50.634619" elapsed="0.000302"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:16:50.634524" elapsed="0.000475"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:16:50.626721" elapsed="0.008435">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:16:52.643549" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:16:52.643678" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:16:52.643912" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:16:52.637417" elapsed="0.007415">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:16:52.645430" elapsed="0.000052"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:16:52.645878" elapsed="0.000053"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:52.646363" elapsed="0.000045"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:52.646701" elapsed="0.000042"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:52.647065" elapsed="0.000041"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:52.647429" elapsed="0.000042"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:52.647972" elapsed="0.000066"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:16:52.647702" elapsed="0.000408"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:16:52.647583" elapsed="0.000583"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:16:52.636557" elapsed="0.011837">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:16:54.655984" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:16:54.656138" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:16:54.656498" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:16:54.650066" elapsed="0.007354">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:16:54.657900" elapsed="0.000049"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:16:54.658386" elapsed="0.000053"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:54.658821" elapsed="0.000041"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:54.659177" elapsed="0.000042"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:54.659560" elapsed="0.000043"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:54.659902" elapsed="0.000041"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:54.660501" elapsed="0.000046"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:16:54.660197" elapsed="0.000420"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:16:54.660076" elapsed="0.000598"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:16:54.649218" elapsed="0.011650">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:16:56.668644" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:16:56.668773" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:16:56.668996" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:16:56.662555" elapsed="0.007414">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:16:56.670525" elapsed="0.000050"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:16:56.670987" elapsed="0.000081"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:56.671545" elapsed="0.000045"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:56.671908" elapsed="0.000044"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:56.672301" elapsed="0.000074"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:56.672684" elapsed="0.000057"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:56.673303" elapsed="0.000079"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:16:56.672975" elapsed="0.000480"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:16:56.672855" elapsed="0.000656"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:16:56.661678" elapsed="0.012026">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:16:58.682155" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:16:58.682280" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:16:58.682651" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:16:58.675512" elapsed="0.008073">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:16:58.684085" elapsed="0.000048"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:16:58.684542" elapsed="0.000052"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:58.684976" elapsed="0.000042"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:58.685361" elapsed="0.000043"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:58.685713" elapsed="0.000042"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:58.686067" elapsed="0.000043"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:16:58.686641" elapsed="0.000045"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:16:58.686363" elapsed="0.000394"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:16:58.686220" elapsed="0.000593"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:16:58.674590" elapsed="0.012416">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:17:00.694866" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:17:00.694992" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:17:00.695267" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:17:00.688709" elapsed="0.007488">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:17:00.696709" elapsed="0.000048"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:17:00.697163" elapsed="0.000052"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:00.697628" elapsed="0.000045"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:00.697968" elapsed="0.000042"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:00.698372" elapsed="0.000044"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:00.698715" elapsed="0.000041"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:00.699275" elapsed="0.000073"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:17:00.698983" elapsed="0.000437"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:17:00.698865" elapsed="0.000611"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:17:00.687846" elapsed="0.011823">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:17:02.707548" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:17:02.707685" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:17:02.708023" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:17:02.701423" elapsed="0.007561">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:17:02.709538" elapsed="0.000049"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:17:02.709996" elapsed="0.000051"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:02.710502" elapsed="0.000044"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:02.710877" elapsed="0.000045"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:02.711266" elapsed="0.000070"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:02.711647" elapsed="0.000042"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:02.712275" elapsed="0.000077"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:17:02.711943" elapsed="0.000486"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:17:02.711806" elapsed="0.000682"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:17:02.700526" elapsed="0.012161">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:17:04.720515" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:17:04.720640" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:17:04.720859" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:17:04.714478" elapsed="0.007306">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:17:04.722286" elapsed="0.000080"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:17:04.723250" elapsed="0.000054"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:04.723727" elapsed="0.000045"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:04.724072" elapsed="0.000065"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:04.724482" elapsed="0.000043"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:04.724828" elapsed="0.000041"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:04.725424" elapsed="0.000047"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:17:04.725095" elapsed="0.000446"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:17:04.724978" elapsed="0.000620"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:17:04.713559" elapsed="0.012230">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:17:06.733640" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:17:06.733766" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:17:06.734108" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:17:06.727527" elapsed="0.007521">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:17:06.735604" elapsed="0.000050"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:17:06.736030" elapsed="0.000051"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:06.736527" elapsed="0.000044"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:06.736870" elapsed="0.000041"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:06.737250" elapsed="0.000042"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:06.737621" elapsed="0.000041"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:06.738194" elapsed="0.000046"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:17:06.737899" elapsed="0.000436"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:17:06.737776" elapsed="0.000620"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:17:06.726611" elapsed="0.011985">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:17:08.746413" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:17:08.746546" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:17:08.746764" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:17:08.740204" elapsed="0.007482">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:17:08.748223" elapsed="0.000050"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:17:08.748680" elapsed="0.000053"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:08.749114" elapsed="0.000066"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:08.749506" elapsed="0.000043"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:08.749858" elapsed="0.000041"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:08.750226" elapsed="0.000042"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:08.750807" elapsed="0.000046"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:17:08.750529" elapsed="0.000392"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:17:08.750409" elapsed="0.000568"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:17:08.739385" elapsed="0.011810">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:17:10.758705" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:17:10.758829" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:17:10.759202" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:17:10.752833" elapsed="0.007277">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:17:10.760654" elapsed="0.000050"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:17:10.761084" elapsed="0.000052"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:10.761572" elapsed="0.000044"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:10.761914" elapsed="0.000042"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:10.762292" elapsed="0.000070"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:10.762666" elapsed="0.000041"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:10.763233" elapsed="0.000516"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:17:10.762936" elapsed="0.000892"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:17:10.762818" elapsed="0.001068"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:17:10.751970" elapsed="0.012113">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:17:12.772510" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:17:12.772637" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:17:12.772857" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:17:12.765981" elapsed="0.007797">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:17:12.774360" elapsed="0.000056"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:17:12.774803" elapsed="0.000052"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:12.775264" elapsed="0.000071"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:12.775651" elapsed="0.000043"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:12.776009" elapsed="0.000042"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:12.776415" elapsed="0.000043"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:12.776965" elapsed="0.000044"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:17:12.776690" elapsed="0.000414"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:17:12.776572" elapsed="0.000610"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:17:12.764967" elapsed="0.012501">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:17:14.785107" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:17:14.785252" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:17:14.785626" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:17:14.779171" elapsed="0.007485">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:17:14.787143" elapsed="0.000048"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:17:14.787635" elapsed="0.000052"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:14.788092" elapsed="0.000062"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:14.788528" elapsed="0.000046"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:14.788898" elapsed="0.000042"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:14.789300" elapsed="0.000099"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:14.790051" elapsed="0.000048"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:17:14.789737" elapsed="0.000437"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:17:14.789569" elapsed="0.000690"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:17:14.778302" elapsed="0.012187">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:17:16.798168" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:17:16.798358" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:17:16.798594" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:17:16.792131" elapsed="0.007401">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:17:16.800014" elapsed="0.000047"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:17:16.800491" elapsed="0.000051"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:16.800922" elapsed="0.000042"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:16.801275" elapsed="0.000067"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:16.801653" elapsed="0.000040"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:16.801992" elapsed="0.000039"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:16.802616" elapsed="0.000045"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:17:16.802292" elapsed="0.000439"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:17:16.802142" elapsed="0.000645"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:17:16.791301" elapsed="0.011680">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:17:18.811459" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:17:18.811586" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:17:18.811916" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:17:18.805234" elapsed="0.007594">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:17:18.813366" elapsed="0.000051"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:17:18.813796" elapsed="0.000051"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:18.814229" elapsed="0.000064"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:18.814619" elapsed="0.000042"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:18.814971" elapsed="0.000040"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:18.815354" elapsed="0.000044"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:18.815903" elapsed="0.000045"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:17:18.815628" elapsed="0.000390"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:17:18.815510" elapsed="0.000565"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:17:18.803798" elapsed="0.012490">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:17:20.824428" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:17:20.824565" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:17:20.824787" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:17:20.818013" elapsed="0.007688">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:17:20.826216" elapsed="0.000051"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:17:20.826689" elapsed="0.000052"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:20.827121" elapsed="0.000044"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:20.827503" elapsed="0.000043"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:20.827857" elapsed="0.000041"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:20.828194" elapsed="0.000041"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:20.828788" elapsed="0.000046"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:17:20.828510" elapsed="0.000395"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:17:20.828388" elapsed="0.000573"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:17:20.817120" elapsed="0.012034">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:17:22.838982" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:17:22.839107" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:17:22.839481" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:17:22.830803" elapsed="0.009595">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:17:22.840880" elapsed="0.000048"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:17:22.841349" elapsed="0.000057"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:22.841790" elapsed="0.000043"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:22.842127" elapsed="0.000042"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:22.842551" elapsed="0.000043"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:22.842896" elapsed="0.000041"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:22.843498" elapsed="0.000046"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:17:22.843168" elapsed="0.000447"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:17:22.843048" elapsed="0.000624"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:17:22.829937" elapsed="0.013928">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:17:24.854441" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:17:24.854575" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:17:24.854812" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:17:24.845467" elapsed="0.010256">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:17:24.856206" elapsed="0.000049"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:17:24.856689" elapsed="0.000052"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:24.857127" elapsed="0.000044"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:24.857511" elapsed="0.000044"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:24.857871" elapsed="0.000042"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:24.858217" elapsed="0.000042"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:24.858814" elapsed="0.000047"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:17:24.858538" elapsed="0.000393"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:17:24.858418" elapsed="0.000570"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:17:24.844610" elapsed="0.014566">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:17:26.866810" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:17:26.866937" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:17:26.867263" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:17:26.860773" elapsed="0.007400">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:17:26.868711" elapsed="0.000050"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:17:26.869139" elapsed="0.000051"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:26.869624" elapsed="0.000044"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:26.869966" elapsed="0.000042"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:26.870352" elapsed="0.000061"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:26.870718" elapsed="0.000041"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:26.871262" elapsed="0.000072"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:17:26.870988" elapsed="0.000438"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:17:26.870869" elapsed="0.000616"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:17:26.859861" elapsed="0.011818">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:17:28.878998" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:17:28.879125" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:17:28.879385" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:17:28.873216" elapsed="0.007042">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:17:28.880792" elapsed="0.000050"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:17:28.881215" elapsed="0.000051"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:28.881702" elapsed="0.000043"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:28.882041" elapsed="0.000042"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:28.882439" elapsed="0.000043"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:28.882783" elapsed="0.000040"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:28.883352" elapsed="0.000047"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:17:28.883049" elapsed="0.000441"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:17:28.882931" elapsed="0.000617"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:17:28.872425" elapsed="0.011313">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<msg time="2026-10-20T23:17:28.883913" level="FAIL">Keyword 'Verify Links' failed after retrying for 1 minute. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<arg>60s</arg>
<arg>2s</arg>
<arg>Verify Links</arg>
<arg>${links}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-10-20T23:16:28.486668" elapsed="60.397442">Keyword 'Verify Links' failed after retrying for 1 minute. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Write" owner="SSHLibrary">
<arg>sh ovs-vsctl find Interface name="s1-eth1"</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:28.884499" elapsed="0.000045"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<var>${output}</var>
<arg>mininet&gt;</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:28.884945" elapsed="0.000043"/>
</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-10-20T23:17:28.885435" elapsed="0.000046"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<arg>sh ovs-vsctl find Interface name="s1-eth2"</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:28.885764" elapsed="0.000041"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<var>${output}</var>
<arg>mininet&gt;</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:28.886094" elapsed="0.000041"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:28.886577" elapsed="0.000042"/>
</kw>
<doc>Take link s1-s2 down</doc>
<status status="FAIL" start="2026-10-20T23:16:28.454511" elapsed="60.432382">Keyword 'Verify Links' failed after retrying for 1 minute. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</test>
<test id="s1-s2-s2-t4" name="Link Up" line="69">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-20T23:17:28.894820" level="INFO">link s1 s2 up</msg>
<arg>link s1 s2 up</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-10-20T23:17:28.889194" elapsed="0.005757"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-10-20T23:17:28.898074" level="INFO">mininet&gt;</msg>
<arg>mininet&gt;</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-10-20T23:17:28.895273" elapsed="0.002922"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:17:28.899448" level="INFO">${links} = [{'link-id': 'openflow:2:3', 'destination': {'dest-node': 'openflow:1', 'dest-tp': 'openflow:1:1'}, 'source': {'source-node': 'openflow:2', 'source-tp': 'openflow:2:3'}}, {'link-id': 'openflow:3:3', '...</msg>
<var>${links}</var>
<arg>${link1}</arg>
<arg>${link2}</arg>
<arg>${link3}</arg>
<arg>${link4}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:17:28.898578" elapsed="0.000936"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:17:28.908001" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:17:28.908112" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:17:28.908342" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:17:28.902135" elapsed="0.007027">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:17:28.909663" elapsed="0.000048"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:17:28.910075" elapsed="0.000049"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:28.910553" elapsed="0.000043"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:28.910888" elapsed="0.000041"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:28.911236" elapsed="0.000040"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:28.911619" elapsed="0.000041"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:28.912144" elapsed="0.000042"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:17:28.911873" elapsed="0.000381"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:17:28.911763" elapsed="0.000575"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:17:28.901495" elapsed="0.011053">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:17:30.917575" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:17:30.917636" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:17:30.917813" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:17:30.913601" elapsed="0.004641">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:17:30.918506" elapsed="0.000023"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:17:30.918711" elapsed="0.000025"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:30.918908" elapsed="0.000019"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:30.919059" elapsed="0.000019"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:30.919218" elapsed="0.000018"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:30.919384" elapsed="0.000019"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:30.919656" elapsed="0.000021"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:17:30.919527" elapsed="0.000180"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:17:30.919468" elapsed="0.000266"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:17:30.913125" elapsed="0.006699">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:17:32.927933" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:17:32.928064" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:17:32.928286" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:17:32.921637" elapsed="0.007557">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:17:32.929747" elapsed="0.000051"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:17:32.930187" elapsed="0.000052"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:32.930670" elapsed="0.000044"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:32.931005" elapsed="0.000041"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:32.931375" elapsed="0.000042"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:32.931736" elapsed="0.000041"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:32.932278" elapsed="0.000074"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:17:32.932005" elapsed="0.000419"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:17:32.931887" elapsed="0.000611"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:17:32.920637" elapsed="0.012057">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:17:34.943006" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:17:34.943129" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:17:34.943541" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:17:34.934352" elapsed="0.010085">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:17:34.944931" elapsed="0.000049"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:17:34.945388" elapsed="0.000052"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:34.945842" elapsed="0.000045"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:34.946184" elapsed="0.000041"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:34.946583" elapsed="0.000043"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:34.946922" elapsed="0.000040"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:34.947494" elapsed="0.000064"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:17:34.947191" elapsed="0.000437"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:17:34.947072" elapsed="0.000612"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:17:34.933548" elapsed="0.014327">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:17:36.955461" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:17:36.955613" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:17:36.955828" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:17:36.949526" elapsed="0.007222">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:17:36.957226" elapsed="0.000047"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:17:36.957702" elapsed="0.000051"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:36.958129" elapsed="0.000043"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:36.958490" elapsed="0.000058"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:36.958856" elapsed="0.000040"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:36.959189" elapsed="0.000039"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:36.959776" elapsed="0.000044"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:17:36.959486" elapsed="0.000403"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:17:36.959366" elapsed="0.000579"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:17:36.948689" elapsed="0.011445">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Verify Links">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:17:38.967838" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:17:38.967964" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '425'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology/topology=flow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:17:38.968279" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_OPERATIONAL_TOPO_FLOW1_API}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:17:38.961761" elapsed="0.007431">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:17:38.969720" elapsed="0.000050"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${result}</var>
<arg>${resp.text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:17:38.970142" elapsed="0.000050"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${result}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:38.970648" elapsed="0.000044"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${content}</var>
<arg>${result}</arg>
<arg>network-topology:topology</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:38.970985" elapsed="0.000041"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${topology}</var>
<arg>${content}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:38.971362" elapsed="0.000043"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${links}</var>
<arg>${topology}</arg>
<arg>link</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:38.971722" elapsed="0.000041"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${links}</arg>
<arg>${expected_link}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:38.972264" elapsed="0.000071"/>
</kw>
<var name="${expected_link}"/>
<status status="NOT RUN" start="2026-10-20T23:17:38.971991" elapsed="0.000417"/>
</iter>
<var>${expected_link}</var>
<value>@{expected_links}</value>
<status status="NOT RUN" start="2026-10-20T23:17:38.971874" elapsed="0.000590"/>
</for>
<arg>${links}</arg>
<status status="FAIL" start="2026-10-20T23:17:38.960933" elapsed="0.011743">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<msg time="2026-10-20T23:17:38.972851" level="FAIL">Keyword 'Verify Links' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<arg>10s</arg>
<arg>2s</arg>
<arg>Verify Links</arg>
<arg>${links}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-10-20T23:17:28.899903" elapsed="10.073142">Keyword 'Verify Links' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<doc>Take link s1-s2 up</doc>
<status status="FAIL" start="2026-10-20T23:17:28.888117" elapsed="10.085267">Keyword 'Verify Links' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig Expected status: 404 != 200</status>
</test>
<kw name="Delete All Sessions" owner="RequestsLibrary" type="TEARDOWN">
<msg time="2026-10-20T23:17:38.974811" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects </doc>
<status status="PASS" start="2026-10-20T23:17:38.974606" elapsed="0.000342"/>
</kw>
<doc>Test suite for RESTCONF Topology</doc>
<status status="FAIL" start="2026-10-20T23:16:08.228201" elapsed="90.746814"/>
</suite>
<suite id="s1-s2-s3" name="030 Restconf Statistics" source="/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/MD_SAL_NSF_OF13/030_restconf_statistics.robot">
<kw name="Create Session" owner="RequestsLibrary" type="SETUP">
<msg time="2026-10-20T23:17:39.004045" level="INFO">Creating Session using : alias=session, url=http://10.30.170.223:8181, headers={'Content-Type': 'application/xml'},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x756aa7851d50&gt;, timeout=None, proxies=None, verify=False,                     debug=0 </msg>
<arg>session</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>headers=${HEADERS_XML}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-10-20T23:17:39.003409" elapsed="0.001076"/>
</kw>
<test id="s1-s2-s3-t1" name="Get Stats for all nodes" line="20">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:17:39.015674" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:17:39.015785" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:17:39.015987" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:17:39.009984" elapsed="0.006056"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:17:39.016830" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:17:39.016213" elapsed="0.000734"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:17:39.018041" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:17:39.017384" elapsed="0.000878"/>
</kw>
<status status="PASS" start="2026-10-20T23:17:39.017002" elapsed="0.001378"/>
</branch>
<status status="PASS" start="2026-10-20T23:17:39.016167" elapsed="0.002283"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:17:39.019175" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:17:39.018799" elapsed="0.001176">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:39.020602" elapsed="0.000049"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:17:39.020238" elapsed="0.000489"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:17:39.020119" elapsed="0.000662"/>
</for>
<arg>${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>${node_list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:17:39.009479" elapsed="0.011489">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:17:41.032924" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:17:41.033044" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:17:41.033259" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:17:41.026893" elapsed="0.006454"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:17:41.034125" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:17:41.033535" elapsed="0.000711"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:17:41.035408" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:17:41.034714" elapsed="0.000813"/>
</kw>
<status status="PASS" start="2026-10-20T23:17:41.034302" elapsed="0.001322"/>
</branch>
<status status="PASS" start="2026-10-20T23:17:41.033489" elapsed="0.002183"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:17:41.036391" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:17:41.035974" elapsed="0.001169">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:41.037767" elapsed="0.000045"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:17:41.037450" elapsed="0.000437"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:17:41.037288" elapsed="0.000654"/>
</for>
<arg>${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>${node_list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:17:41.025904" elapsed="0.012228">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:17:43.050144" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:17:43.050263" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:17:43.050544" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:17:43.044215" elapsed="0.006385"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:17:43.051525" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:17:43.050917" elapsed="0.000754"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:17:43.052815" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:17:43.052085" elapsed="0.000849"/>
</kw>
<status status="PASS" start="2026-10-20T23:17:43.051728" elapsed="0.001278"/>
</branch>
<status status="PASS" start="2026-10-20T23:17:43.050868" elapsed="0.002183"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:17:43.054231" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:17:43.053381" elapsed="0.001676">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:43.055705" elapsed="0.000048"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:17:43.055357" elapsed="0.000473"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:17:43.055203" elapsed="0.000683"/>
</for>
<arg>${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>${node_list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:17:43.043124" elapsed="0.012953">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:17:45.067811" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:17:45.067933" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:17:45.068148" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:17:45.062012" elapsed="0.006189"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:17:45.069012" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:17:45.068420" elapsed="0.000711"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:17:45.070262" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:17:45.069580" elapsed="0.000833"/>
</kw>
<status status="PASS" start="2026-10-20T23:17:45.069187" elapsed="0.001302"/>
</branch>
<status status="PASS" start="2026-10-20T23:17:45.068373" elapsed="0.002162"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:17:45.071240" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:17:45.070856" elapsed="0.001170">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:45.072618" elapsed="0.000067"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:17:45.072288" elapsed="0.000475"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:17:45.072169" elapsed="0.000651"/>
</for>
<arg>${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>${node_list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:17:45.061048" elapsed="0.011964">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:17:47.084734" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:17:47.084962" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:17:47.085182" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:17:47.078916" elapsed="0.006321"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:17:47.086046" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:17:47.085457" elapsed="0.000710"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:17:47.087429" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:17:47.086618" elapsed="0.000929"/>
</kw>
<status status="PASS" start="2026-10-20T23:17:47.086222" elapsed="0.001398"/>
</branch>
<status status="PASS" start="2026-10-20T23:17:47.085410" elapsed="0.002256"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:17:47.088407" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:17:47.087990" elapsed="0.001180">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:47.089786" elapsed="0.000048"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:17:47.089468" elapsed="0.000440"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:17:47.089343" elapsed="0.000622"/>
</for>
<arg>${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>${node_list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:17:47.077932" elapsed="0.012223">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:17:49.097092" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:17:49.097149" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:17:49.097260" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:17:49.093296" elapsed="0.003989"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:17:49.097676" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:17:49.097396" elapsed="0.000334"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:17:49.098247" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:17:49.097928" elapsed="0.000372"/>
</kw>
<status status="PASS" start="2026-10-20T23:17:49.097767" elapsed="0.000581"/>
</branch>
<status status="PASS" start="2026-10-20T23:17:49.097372" elapsed="0.000996"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:17:49.098687" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:17:49.098502" elapsed="0.000573">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:49.099355" elapsed="0.000021"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:17:49.099198" elapsed="0.000268"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:17:49.099142" elapsed="0.000356"/>
</for>
<arg>${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>${node_list}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
${elements} is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:17:49.092847" elapsed="0.006742">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<msg time="2026-10-20T23:17:49.099676" level="FAIL">Keyword 'Check For Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</msg>
<arg>10s</arg>
<arg>2s</arg>
<arg>Check For Elements At URI</arg>
<arg>${RFC8040_OPERATIONAL_NODES_API}</arg>
<arg>${node_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-10-20T23:17:39.005801" elapsed="10.093977">Keyword 'Check For Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<doc>Get the stats for all nodes</doc>
<status status="FAIL" start="2026-10-20T23:17:39.004720" elapsed="10.095209">Keyword 'Check For Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</test>
<test id="s1-s2-s3-t2" name="Get Stats for node 1" line="29">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check Nodes Stats" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:17:49.106055" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:17:49.106107" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:17:49.106196" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=${node}</arg>
<arg>params=${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:17:49.102353" elapsed="0.004461">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:49.107196" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:49.107591" elapsed="0.000042"/>
</kw>
<arg>openflow%3A1</arg>
<doc>A GET on the /node/${node} API is made and specific flow stat
strings are checked for existence.</doc>
<status status="FAIL" start="2026-10-20T23:17:49.102044" elapsed="0.005804">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Nodes Stats" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:17:51.117168" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:17:51.117288" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:17:51.117546" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=${node}</arg>
<arg>params=${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:17:51.111290" elapsed="0.007173">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:51.118903" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:51.119267" elapsed="0.000073"/>
</kw>
<arg>openflow%3A1</arg>
<doc>A GET on the /node/${node} API is made and specific flow stat
strings are checked for existence.</doc>
<status status="FAIL" start="2026-10-20T23:17:51.110506" elapsed="0.009035">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Nodes Stats" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:17:53.129518" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:17:53.129638" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:17:53.129893" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=${node}</arg>
<arg>params=${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:17:53.123662" elapsed="0.007132">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:53.131233" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:53.131634" elapsed="0.000043"/>
</kw>
<arg>openflow%3A1</arg>
<doc>A GET on the /node/${node} API is made and specific flow stat
strings are checked for existence.</doc>
<status status="FAIL" start="2026-10-20T23:17:53.122878" elapsed="0.009013">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Nodes Stats" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:17:55.141550" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:17:55.141675" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:17:55.141945" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=${node}</arg>
<arg>params=${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:17:55.135625" elapsed="0.007278">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:55.143352" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:55.143715" elapsed="0.000041"/>
</kw>
<arg>openflow%3A1</arg>
<doc>A GET on the /node/${node} API is made and specific flow stat
strings are checked for existence.</doc>
<status status="FAIL" start="2026-10-20T23:17:55.134769" elapsed="0.009209">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Nodes Stats" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:17:57.153412" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:17:57.153533" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:17:57.153751" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=${node}</arg>
<arg>params=${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:17:57.147572" elapsed="0.007094">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:57.155198" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:57.155599" elapsed="0.000042"/>
</kw>
<arg>openflow%3A1</arg>
<doc>A GET on the /node/${node} API is made and specific flow stat
strings are checked for existence.</doc>
<status status="FAIL" start="2026-10-20T23:17:57.146770" elapsed="0.009067">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Nodes Stats" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:17:59.165856" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:17:59.166008" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:17:59.166220" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=${node}</arg>
<arg>params=${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:17:59.159598" elapsed="0.007534">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:59.167571" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:59.167961" elapsed="0.000042"/>
</kw>
<arg>openflow%3A1</arg>
<doc>A GET on the /node/${node} API is made and specific flow stat
strings are checked for existence.</doc>
<status status="FAIL" start="2026-10-20T23:17:59.158752" elapsed="0.009445">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<msg time="2026-10-20T23:17:59.168404" level="FAIL">Keyword 'Check Nodes Stats' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</msg>
<arg>10s</arg>
<arg>2s</arg>
<arg>Check Nodes Stats</arg>
<arg>openflow%3A1</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-10-20T23:17:49.100746" elapsed="10.067850">Keyword 'Check Nodes Stats' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</status>
</kw>
<doc>Get the stats for a node</doc>
<status status="FAIL" start="2026-10-20T23:17:49.100275" elapsed="10.068621">Keyword 'Check Nodes Stats' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig Expected status: 404 != 200</status>
</test>
<test id="s1-s2-s3-t3" name="Get Stats for node 2" line="33">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check Nodes Stats" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:17:59.179475" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:17:59.179584" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:17:59.179776" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=${node}</arg>
<arg>params=${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:17:59.174613" elapsed="0.005988">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:59.181000" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:17:59.181383" elapsed="0.000117"/>
</kw>
<arg>openflow%3A2</arg>
<doc>A GET on the /node/${node} API is made and specific flow stat
strings are checked for existence.</doc>
<status status="FAIL" start="2026-10-20T23:17:59.173936" elapsed="0.007757">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Nodes Stats" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:18:01.191478" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:18:01.191601" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:18:01.191819" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=${node}</arg>
<arg>params=${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:18:01.185293" elapsed="0.007432">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:01.193182" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:01.193585" elapsed="0.000043"/>
</kw>
<arg>openflow%3A2</arg>
<doc>A GET on the /node/${node} API is made and specific flow stat
strings are checked for existence.</doc>
<status status="FAIL" start="2026-10-20T23:18:01.184471" elapsed="0.009371">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Nodes Stats" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:18:03.203645" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:18:03.203767" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:18:03.203985" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=${node}</arg>
<arg>params=${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:18:03.197488" elapsed="0.007436">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:03.205398" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:03.205765" elapsed="0.000042"/>
</kw>
<arg>openflow%3A2</arg>
<doc>A GET on the /node/${node} API is made and specific flow stat
strings are checked for existence.</doc>
<status status="FAIL" start="2026-10-20T23:18:03.196644" elapsed="0.009382">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Nodes Stats" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:18:05.215593" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:18:05.215714" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:18:05.216030" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=${node}</arg>
<arg>params=${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:18:05.209549" elapsed="0.007396">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:05.217420" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:05.217790" elapsed="0.000042"/>
</kw>
<arg>openflow%3A2</arg>
<doc>A GET on the /node/${node} API is made and specific flow stat
strings are checked for existence.</doc>
<status status="FAIL" start="2026-10-20T23:18:05.208729" elapsed="0.009296">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Nodes Stats" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:18:07.228035" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:18:07.228197" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:18:07.228483" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=${node}</arg>
<arg>params=${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:18:07.222175" elapsed="0.007215">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:07.229824" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:07.230236" elapsed="0.000046"/>
</kw>
<arg>openflow%3A2</arg>
<doc>A GET on the /node/${node} API is made and specific flow stat
strings are checked for existence.</doc>
<status status="FAIL" start="2026-10-20T23:18:07.221404" elapsed="0.009118">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Nodes Stats" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:18:09.239964" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:18:09.240086" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:18:09.240364" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=${node}</arg>
<arg>params=${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:18:09.234088" elapsed="0.007165">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:09.241704" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:09.242066" elapsed="0.000041"/>
</kw>
<arg>openflow%3A2</arg>
<doc>A GET on the /node/${node} API is made and specific flow stat
strings are checked for existence.</doc>
<status status="FAIL" start="2026-10-20T23:18:09.233275" elapsed="0.009077">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<msg time="2026-10-20T23:18:09.242540" level="FAIL">Keyword 'Check Nodes Stats' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</msg>
<arg>10s</arg>
<arg>2s</arg>
<arg>Check Nodes Stats</arg>
<arg>openflow%3A2</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-10-20T23:17:59.170524" elapsed="10.072203">Keyword 'Check Nodes Stats' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<doc>Get the stats for a node</doc>
<status status="FAIL" start="2026-10-20T23:17:59.169566" elapsed="10.073585">Keyword 'Check Nodes Stats' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A2?content=nonconfig Expected status: 404 != 200</status>
</test>
<test id="s1-s2-s3-t4" name="Get Stats for node 3" line="37">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check Nodes Stats" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:18:09.253375" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:18:09.253488" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:18:09.253685" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=${node}</arg>
<arg>params=${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:18:09.248429" elapsed="0.006101">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:09.254914" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:09.255299" elapsed="0.000072"/>
</kw>
<arg>openflow%3A3</arg>
<doc>A GET on the /node/${node} API is made and specific flow stat
strings are checked for existence.</doc>
<status status="FAIL" start="2026-10-20T23:18:09.247726" elapsed="0.007834">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Nodes Stats" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:18:11.264816" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:18:11.264937" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:18:11.265149" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=${node}</arg>
<arg>params=${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:18:11.259041" elapsed="0.007013">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:11.266516" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:11.266873" elapsed="0.000041"/>
</kw>
<arg>openflow%3A3</arg>
<doc>A GET on the /node/${node} API is made and specific flow stat
strings are checked for existence.</doc>
<status status="FAIL" start="2026-10-20T23:18:11.258260" elapsed="0.008847">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Nodes Stats" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:18:13.277172" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:18:13.277359" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:18:13.277699" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=${node}</arg>
<arg>params=${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:18:13.271147" elapsed="0.007746">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:13.279386" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:13.279802" elapsed="0.000044"/>
</kw>
<arg>openflow%3A3</arg>
<doc>A GET on the /node/${node} API is made and specific flow stat
strings are checked for existence.</doc>
<status status="FAIL" start="2026-10-20T23:18:13.270386" elapsed="0.009667">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Nodes Stats" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:18:15.289458" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:18:15.289583" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:18:15.289796" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=${node}</arg>
<arg>params=${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:18:15.283597" elapsed="0.007114">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:15.291125" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:15.291552" elapsed="0.000045"/>
</kw>
<arg>openflow%3A3</arg>
<doc>A GET on the /node/${node} API is made and specific flow stat
strings are checked for existence.</doc>
<status status="FAIL" start="2026-10-20T23:18:15.282791" elapsed="0.009002">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Nodes Stats" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:18:17.301131" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:18:17.301252" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:18:17.301533" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=${node}</arg>
<arg>params=${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:18:17.295301" elapsed="0.007139">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:17.302852" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:17.303213" elapsed="0.000042"/>
</kw>
<arg>openflow%3A3</arg>
<doc>A GET on the /node/${node} API is made and specific flow stat
strings are checked for existence.</doc>
<status status="FAIL" start="2026-10-20T23:18:17.294520" elapsed="0.008988">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Nodes Stats" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:18:19.313064" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:18:19.313365" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:18:19.313620" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${RFC8040_NODES_API}/node=${node}</arg>
<arg>params=${RFC8040_OPERATIONAL_CONTENT}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:18:19.306969" elapsed="0.007634">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:19.315055" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:19.315518" elapsed="0.000048"/>
</kw>
<arg>openflow%3A3</arg>
<doc>A GET on the /node/${node} API is made and specific flow stat
strings are checked for existence.</doc>
<status status="FAIL" start="2026-10-20T23:18:19.306152" elapsed="0.009616">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</status>
</kw>
<msg time="2026-10-20T23:18:19.315952" level="FAIL">Keyword 'Check Nodes Stats' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</msg>
<arg>10s</arg>
<arg>2s</arg>
<arg>Check Nodes Stats</arg>
<arg>openflow%3A3</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-10-20T23:18:09.244771" elapsed="10.071372">Keyword 'Check Nodes Stats' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</status>
</kw>
<doc>Get the stats for a node</doc>
<status status="FAIL" start="2026-10-20T23:18:09.243806" elapsed="10.072747">Keyword 'Check Nodes Stats' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A3?content=nonconfig Expected status: 404 != 200</status>
</test>
<kw name="Delete All Sessions" owner="RequestsLibrary" type="TEARDOWN">
<msg time="2026-10-20T23:18:19.317856" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects </doc>
<status status="PASS" start="2026-10-20T23:18:19.317671" elapsed="0.000321"/>
</kw>
<doc>Test suite for RESTCONF statistics</doc>
<status status="FAIL" start="2026-10-20T23:17:38.976510" elapsed="40.341554"/>
</suite>
<suite id="s1-s2-s4" name="040 Restconf Frm" source="/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/MD_SAL_NSF_OF13/040_restconf_frm.robot">
<kw name="Create Session" owner="RequestsLibrary" type="SETUP">
<msg time="2026-10-20T23:18:19.346892" level="INFO">Creating Session using : alias=session, url=http://10.30.170.223:8181, headers={'Content-Type': 'application/xml'},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x756aa5798450&gt;, timeout=None, proxies=None, verify=False,                     debug=0 </msg>
<arg>session</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>headers=${HEADERS_XML}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-10-20T23:18:19.346288" elapsed="0.000929"/>
</kw>
<test id="s1-s2-s4-t1" name="Add a flow - Sending IPv4 Dest Address and Eth type" line="23">
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:18:19.356093" level="INFO">PUT Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Content-Length': '429', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;priority&gt;2&lt;/priority&gt;&lt;flow-name&gt;Foo&lt;/flow-name&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;2048&lt;/type&gt;&lt;/ethernet-type&gt;&lt;/ethernet-match&gt;&lt;ipv4-destination&gt;10.0.10.1/32&lt;/ipv4-destination&gt;&lt;/match&gt;&lt;id&gt;139&lt;/id&gt;&lt;table_id&gt;2&lt;/table_id&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;dec-nw-ttl/&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;/flow&gt; 
 </msg>
<msg time="2026-10-20T23:18:19.356208" level="INFO">PUT Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139 
 status=404, reason=Not Found 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-10-20T23:18:19.356446" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A1/flow-node-inventory:table=2/flow=139</arg>
<arg>headers=${HEADERS_XML}</arg>
<arg>data=${BODY1}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:18:19.348471" elapsed="0.008709">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139</status>
</kw>
<doc>Push a flow through REST-API</doc>
<status status="FAIL" start="2026-10-20T23:18:19.347422" elapsed="0.010147">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139</status>
</test>
<test id="s1-s2-s4-t2" name="Verify after adding flow config - Sending IPv4 Dest Address and Eth type" line="31">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:18:19.364398" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2?content=config 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2?content=config 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:18:19.364573" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2?content=config 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '448'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:18:19.364766" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2?content=config Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A1/flow-node-inventory:table=2?content=config</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:18:19.359164" elapsed="0.006463">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2?content=config Expected status: 404 != 200</status>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>139</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:19.366053" elapsed="0.000048"/>
</kw>
<doc>Verify the flow</doc>
<status status="FAIL" start="2026-10-20T23:18:19.358163" elapsed="0.008267">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2?content=config Expected status: 404 != 200</status>
</test>
<test id="s1-s2-s4-t3" name="Verify after adding flow operational - Sending IPv4 Dest Address and Eth type" line="39">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:18:19.368792" level="INFO">${elements} = ['10.0.10.1']</msg>
<var>${elements}</var>
<arg>10.0.10.1</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:18:19.368047" elapsed="0.000805"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:18:19.378597" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:18:19.378704" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '457'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:18:19.378901" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:18:19.373274" elapsed="0.005680"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:18:19.379763" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:18:19.379124" elapsed="0.000763"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:18:19.380991" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:18:19.380372" elapsed="0.000731"/>
</kw>
<status status="PASS" start="2026-10-20T23:18:19.379947" elapsed="0.001224"/>
</branch>
<status status="PASS" start="2026-10-20T23:18:19.379080" elapsed="0.002136"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:18:19.381951" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:18:19.381589" elapsed="0.001079">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:19.383222" elapsed="0.000043"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:18:19.382941" elapsed="0.000449"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:18:19.382815" elapsed="0.000634"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig</arg>
<arg>${elements}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
['10.0.10.1'] is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:18:19.372414" elapsed="0.011224">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:18:21.394016" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:18:21.394249" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '457'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:18:21.394567" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:18:21.388095" elapsed="0.006530"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:18:21.395463" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:18:21.394814" elapsed="0.000773"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:18:21.396741" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:18:21.396004" elapsed="0.000854"/>
</kw>
<status status="PASS" start="2026-10-20T23:18:21.395643" elapsed="0.001287"/>
</branch>
<status status="PASS" start="2026-10-20T23:18:21.394767" elapsed="0.002209"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:18:21.397725" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:18:21.397279" elapsed="0.001238">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:21.399085" elapsed="0.000046"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:18:21.398786" elapsed="0.000418"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:18:21.398665" elapsed="0.000595"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig</arg>
<arg>${elements}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
['10.0.10.1'] is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:18:21.387049" elapsed="0.012462">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:18:23.409703" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:18:23.409826" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '457'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:18:23.410052" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:18:23.403523" elapsed="0.006587"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:18:23.410911" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:18:23.410293" elapsed="0.000739"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:18:23.412194" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:18:23.411525" elapsed="0.000816"/>
</kw>
<status status="PASS" start="2026-10-20T23:18:23.411086" elapsed="0.001444"/>
</branch>
<status status="PASS" start="2026-10-20T23:18:23.410247" elapsed="0.002376"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:18:23.413401" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:18:23.412959" elapsed="0.001315">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:23.414903" elapsed="0.000045"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:18:23.414600" elapsed="0.000421"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:18:23.414473" elapsed="0.000605"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig</arg>
<arg>${elements}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
['10.0.10.1'] is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:18:23.402448" elapsed="0.012824">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:18:25.425102" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:18:25.425225" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '457'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:18:25.425505" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:18:25.419087" elapsed="0.006480"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:18:25.426345" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:18:25.425751" elapsed="0.000745"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:18:25.427634" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:18:25.426908" elapsed="0.000842"/>
</kw>
<status status="PASS" start="2026-10-20T23:18:25.426552" elapsed="0.001269"/>
</branch>
<status status="PASS" start="2026-10-20T23:18:25.425704" elapsed="0.002163"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:18:25.428601" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:18:25.428160" elapsed="0.001221">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:25.429969" elapsed="0.000045"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:18:25.429673" elapsed="0.000417"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:18:25.429554" elapsed="0.000592"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig</arg>
<arg>${elements}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
['10.0.10.1'] is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:18:25.418034" elapsed="0.012333">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:18:27.443121" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:18:27.443242" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '457'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:18:27.443667" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:18:27.437222" elapsed="0.006504"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:18:27.444521" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:18:27.443908" elapsed="0.000735"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:18:27.445782" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:18:27.445053" elapsed="0.000847"/>
</kw>
<status status="PASS" start="2026-10-20T23:18:27.444698" elapsed="0.001273"/>
</branch>
<status status="PASS" start="2026-10-20T23:18:27.443861" elapsed="0.002156"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:18:27.446757" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:18:27.446346" elapsed="0.001204">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:27.448106" elapsed="0.000044"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:18:27.447814" elapsed="0.000409"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:18:27.447695" elapsed="0.000585"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig</arg>
<arg>${elements}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
['10.0.10.1'] is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:18:27.436182" elapsed="0.012342">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:18:29.458513" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:18:29.458660" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '457'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:18:29.458882" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:18:29.452242" elapsed="0.006696"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:18:29.459766" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:18:29.459122" elapsed="0.000766"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:18:29.461107" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:18:29.460304" elapsed="0.000926"/>
</kw>
<status status="PASS" start="2026-10-20T23:18:29.459943" elapsed="0.001359"/>
</branch>
<status status="PASS" start="2026-10-20T23:18:29.459074" elapsed="0.002312"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:18:29.462114" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:18:29.461721" elapsed="0.001228">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:29.463572" elapsed="0.000049"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:18:29.463219" elapsed="0.000476"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:18:29.463096" elapsed="0.000656"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig</arg>
<arg>${elements}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
['10.0.10.1'] is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:18:29.451207" elapsed="0.012831">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig Expected status: 404 != 200</status>
</kw>
<msg time="2026-10-20T23:18:29.464234" level="FAIL">Keyword 'Check For Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig Expected status: 404 != 200</msg>
<arg>10s</arg>
<arg>2s</arg>
<arg>Check For Elements At URI</arg>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig</arg>
<arg>${elements}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-10-20T23:18:19.369265" elapsed="10.095198">Keyword 'Check For Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig Expected status: 404 != 200</status>
</kw>
<doc>Verify the flow</doc>
<status status="FAIL" start="2026-10-20T23:18:19.367024" elapsed="10.097777">Keyword 'Check For Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig Expected status: 404 != 200</status>
</test>
<test id="s1-s2-s4-t4" name="Modify a flow - Output to physical port#" line="49">
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:18:29.472116" level="INFO">PUT Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Content-Length': '522', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;priority&gt;2&lt;/priority&gt;&lt;flow-name&gt;Foo&lt;/flow-name&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;2048&lt;/type&gt;&lt;/ethernet-type&gt;&lt;/ethernet-match&gt;&lt;ipv4-destination&gt;10.0.20.1/32&lt;/ipv4-destination&gt;&lt;/match&gt;&lt;id&gt;139&lt;/id&gt;&lt;table_id&gt;2&lt;/table_id&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;1&lt;/output-node-connector&gt;&lt;max-length&gt;60&lt;/max-length&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;/flow&gt; 
 </msg>
<msg time="2026-10-20T23:18:29.472235" level="INFO">PUT Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139 
 status=404, reason=Not Found 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-10-20T23:18:29.472444" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139 Expected status: 404 != 204</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A1/flow-node-inventory:table=2/flow=139</arg>
<arg>headers=${HEADERS_XML}</arg>
<arg>data=${BODY2}</arg>
<arg>expected_status=204</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:18:29.466428" elapsed="0.006821">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139 Expected status: 404 != 204</status>
</kw>
<doc>Push a flow through REST-API</doc>
<status status="FAIL" start="2026-10-20T23:18:29.465474" elapsed="0.008152">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139 Expected status: 404 != 204</status>
</test>
<test id="s1-s2-s4-t5" name="Verify after modifying flow config - Output to physical port#" line="58">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:18:29.480739" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2?content=config 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2?content=config 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:18:29.480850" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2?content=config 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '448'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:18:29.481041" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2?content=config Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A1/flow-node-inventory:table=2?content=config</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:18:29.475158" elapsed="0.007216">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2?content=config Expected status: 404 != 200</status>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>10.0.20.1</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:29.482770" elapsed="0.000047"/>
</kw>
<doc>Verify the flow</doc>
<status status="FAIL" start="2026-10-20T23:18:29.474177" elapsed="0.008900">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2?content=config Expected status: 404 != 200</status>
</test>
<test id="s1-s2-s4-t6" name="Verify after modifying flow operational - Output to physical port#" line="66">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:18:29.485198" level="INFO">${elements} = ['10.0.20.1']</msg>
<var>${elements}</var>
<arg>10.0.20.1</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:18:29.484603" elapsed="0.000652"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:18:29.494611" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:18:29.494787" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '457'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:18:29.494993" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:18:29.489535" elapsed="0.005511"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:18:29.495802" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:18:29.495211" elapsed="0.000709"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:18:29.497005" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:18:29.496357" elapsed="0.000764"/>
</kw>
<status status="PASS" start="2026-10-20T23:18:29.495975" elapsed="0.001216"/>
</branch>
<status status="PASS" start="2026-10-20T23:18:29.495169" elapsed="0.002072"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:18:29.497960" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:18:29.497588" elapsed="0.001092">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:29.499217" elapsed="0.000045"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:18:29.498935" elapsed="0.000429"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:18:29.498818" elapsed="0.000605"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig</arg>
<arg>${elements}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
['10.0.20.1'] is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:18:29.488635" elapsed="0.010993">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:18:31.510498" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:18:31.510648" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '457'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:18:31.510905" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:18:31.503771" elapsed="0.007193"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:18:31.511872" elapsed="0.000058"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:18:31.511185" elapsed="0.000838"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:18:31.513349" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:18:31.512521" elapsed="0.001061"/>
</kw>
<status status="PASS" start="2026-10-20T23:18:31.512090" elapsed="0.001627"/>
</branch>
<status status="PASS" start="2026-10-20T23:18:31.511121" elapsed="0.002646"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:18:31.514611" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:18:31.514078" elapsed="0.001438">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:31.516201" elapsed="0.000050"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:18:31.515858" elapsed="0.000501"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:18:31.515709" elapsed="0.000725"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig</arg>
<arg>${elements}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
['10.0.20.1'] is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:18:31.502548" elapsed="0.014140">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:18:33.527102" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:18:33.527224" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '457'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:18:33.527504" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:18:33.521148" elapsed="0.006412"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:18:33.528374" elapsed="0.000058"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:18:33.527771" elapsed="0.000727"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:18:33.529654" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:18:33.528936" elapsed="0.000838"/>
</kw>
<status status="PASS" start="2026-10-20T23:18:33.528554" elapsed="0.001292"/>
</branch>
<status status="PASS" start="2026-10-20T23:18:33.527723" elapsed="0.002169"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:18:33.530603" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:18:33.530188" elapsed="0.001200">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:33.531973" elapsed="0.000045"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:18:33.531673" elapsed="0.000418"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:18:33.531532" elapsed="0.000615"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig</arg>
<arg>${elements}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
['10.0.20.1'] is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:18:33.520104" elapsed="0.012263">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:18:35.542721" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:18:35.542846" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '457'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:18:35.543164" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:18:35.536241" elapsed="0.006979"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:18:35.544054" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:18:35.543440" elapsed="0.000736"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:18:35.545350" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:18:35.544625" elapsed="0.000847"/>
</kw>
<status status="PASS" start="2026-10-20T23:18:35.544231" elapsed="0.001314"/>
</branch>
<status status="PASS" start="2026-10-20T23:18:35.543392" elapsed="0.002199"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:18:35.546337" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:18:35.545918" elapsed="0.001173">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:35.547707" elapsed="0.000048"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:18:35.547389" elapsed="0.000441"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:18:35.547237" elapsed="0.000650"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig</arg>
<arg>${elements}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
['10.0.20.1'] is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:18:35.535190" elapsed="0.012890">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:18:37.558133" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:18:37.558253" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '457'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:18:37.558517" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:18:37.551909" elapsed="0.006665"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:18:37.559397" elapsed="0.000059"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:18:37.558787" elapsed="0.000738"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:18:37.560663" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:18:37.559960" elapsed="0.000845"/>
</kw>
<status status="PASS" start="2026-10-20T23:18:37.559580" elapsed="0.001297"/>
</branch>
<status status="PASS" start="2026-10-20T23:18:37.558714" elapsed="0.002208"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:18:37.561714" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:18:37.561293" elapsed="0.001273">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:37.563148" elapsed="0.000045"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:18:37.562853" elapsed="0.000413"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:18:37.562710" elapsed="0.000642"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig</arg>
<arg>${elements}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
['10.0.20.1'] is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:18:37.550838" elapsed="0.012807">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:18:39.573977" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:18:39.574099" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '457'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:18:39.574368" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:18:39.568060" elapsed="0.006366"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:18:39.575202" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:18:39.574609" elapsed="0.000749"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:18:39.576507" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:18:39.575801" elapsed="0.000826"/>
</kw>
<status status="PASS" start="2026-10-20T23:18:39.575418" elapsed="0.001282"/>
</branch>
<status status="PASS" start="2026-10-20T23:18:39.574563" elapsed="0.002184"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:18:39.577486" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:18:39.577070" elapsed="0.001174">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:39.578858" elapsed="0.000047"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:18:39.578540" elapsed="0.000440"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:18:39.578419" elapsed="0.000618"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig</arg>
<arg>${elements}</arg>
<doc>A GET is made at the supplied ${URI} and every item in the list of
['10.0.20.1'] is verified to exist in the response</doc>
<status status="FAIL" start="2026-10-20T23:18:39.566977" elapsed="0.012251">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig Expected status: 404 != 200</status>
</kw>
<msg time="2026-10-20T23:18:39.579448" level="FAIL">Keyword 'Check For Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig Expected status: 404 != 200</msg>
<arg>10s</arg>
<arg>2s</arg>
<arg>Check For Elements At URI</arg>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig</arg>
<arg>${elements}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-10-20T23:18:29.485690" elapsed="10.093951">Keyword 'Check For Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig Expected status: 404 != 200</status>
</kw>
<doc>Verify the flow</doc>
<status status="FAIL" start="2026-10-20T23:18:29.483639" elapsed="10.096336">Keyword 'Check For Elements At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139?content=nonconfig Expected status: 404 != 200</status>
</test>
<test id="s1-s2-s4-t7" name="Remove a flow - Output to physical port#" line="76">
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:18:39.586361" level="INFO">DELETE Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:18:39.586465" level="INFO">DELETE Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139 
 status=404, reason=Not Found 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-10-20T23:18:39.586634" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139 Expected status: 404 != 204</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A1/flow-node-inventory:table=2/flow=139</arg>
<arg>expected_status=204</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:18:39.581548" elapsed="0.006009">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139 Expected status: 404 != 204</status>
</kw>
<doc>Remove a flow</doc>
<status status="FAIL" start="2026-10-20T23:18:39.580639" elapsed="0.007247">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2/flow=139 Expected status: 404 != 204</status>
</test>
<test id="s1-s2-s4-t8" name="Verify after deleting flow config - Output to physical port#" line="83">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:18:39.594296" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2?content=config 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2?content=config 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:18:39.594445" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2?content=config 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '448'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:18:39.594640" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2?content=config Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A1/flow-node-inventory:table=2?content=config</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:18:39.589439" elapsed="0.006022">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2?content=config Expected status: 404 != 200</status>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>139</arg>
<doc>Fails if the `container` contains the `item`.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:39.595862" elapsed="0.000047"/>
</kw>
<doc>Verify the flow</doc>
<status status="FAIL" start="2026-10-20T23:18:39.588473" elapsed="0.007692">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2?content=config Expected status: 404 != 200</status>
</test>
<test id="s1-s2-s4-t9" name="Verify after deleting flow operational - Output to physical port#" line="91">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:18:39.598382" level="INFO">${elements} = ['10.0.20.1']</msg>
<var>${elements}</var>
<arg>10.0.20.1</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:18:39.597742" elapsed="0.000703"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check For Elements Not At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:18:39.610495" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:18:39.610604" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '448'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:18:39.610848" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:18:39.605578" elapsed="0.005324"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:18:39.611620" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:18:39.611062" elapsed="0.000677"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:18:39.612856" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:18:39.612165" elapsed="0.000807"/>
</kw>
<status status="PASS" start="2026-10-20T23:18:39.611812" elapsed="0.001232"/>
</branch>
<status status="PASS" start="2026-10-20T23:18:39.611022" elapsed="0.002066"/>
</if>
<if>
<branch type="IF" condition="&quot;${check_for_null}&quot; == &quot;True&quot;">
<if>
<branch type="IF" condition="${resp.status_code} == 404 or ${resp.status_code} == 409">
<return>
<status status="NOT RUN" start="2026-10-20T23:18:39.613556" elapsed="0.000034"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:18:39.613477" elapsed="0.000169"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:18:39.613446" elapsed="0.000245"/>
</if>
<status status="NOT RUN" start="2026-10-20T23:18:39.613203" elapsed="0.000535"/>
</branch>
<status status="PASS" start="2026-10-20T23:18:39.613169" elapsed="0.000697"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:18:39.614573" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:18:39.614171" elapsed="0.001092">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` contains the `item`.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:39.615847" elapsed="0.000046"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:18:39.615548" elapsed="0.000416"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:18:39.615433" elapsed="0.000584"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/flow-node-inventory:table=2?content=nonconfig</arg>
<arg>${elements}</arg>
<doc>A GET is made at the supplied ${uri} and every item in the list of
['10.0.20.1'] is verified to NOT exist in the response. If ${check_for_null} is True
return of 404 is treated as empty list. From Neon onwards, an empty list is always
returned as null, giving 404 on rest call.</doc>
<status status="FAIL" start="2026-10-20T23:18:39.604611" elapsed="0.011587">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements Not At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:18:41.628197" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:18:41.628353" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '448'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:18:41.628580" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:18:41.622418" elapsed="0.006216"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:18:41.629446" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:18:41.628842" elapsed="0.000726"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:18:41.630719" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:18:41.630014" elapsed="0.000847"/>
</kw>
<status status="PASS" start="2026-10-20T23:18:41.629622" elapsed="0.001318"/>
</branch>
<status status="PASS" start="2026-10-20T23:18:41.628773" elapsed="0.002213"/>
</if>
<if>
<branch type="IF" condition="&quot;${check_for_null}&quot; == &quot;True&quot;">
<if>
<branch type="IF" condition="${resp.status_code} == 404 or ${resp.status_code} == 409">
<return>
<status status="NOT RUN" start="2026-10-20T23:18:41.631453" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:18:41.631373" elapsed="0.000166"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:18:41.631339" elapsed="0.000245"/>
</if>
<status status="NOT RUN" start="2026-10-20T23:18:41.631106" elapsed="0.000526"/>
</branch>
<status status="PASS" start="2026-10-20T23:18:41.631072" elapsed="0.000605"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:18:41.632411" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:18:41.631991" elapsed="0.001179">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` contains the `item`.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:41.633762" elapsed="0.000045"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:18:41.633466" elapsed="0.000437"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:18:41.633344" elapsed="0.000615"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/flow-node-inventory:table=2?content=nonconfig</arg>
<arg>${elements}</arg>
<doc>A GET is made at the supplied ${uri} and every item in the list of
['10.0.20.1'] is verified to NOT exist in the response. If ${check_for_null} is True
return of 404 is treated as empty list. From Neon onwards, an empty list is always
returned as null, giving 404 on rest call.</doc>
<status status="FAIL" start="2026-10-20T23:18:41.621287" elapsed="0.012867">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements Not At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:18:43.646158" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:18:43.646445" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '448'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:18:43.646676" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:18:43.640375" elapsed="0.006357"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:18:43.647600" elapsed="0.000058"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:18:43.646944" elapsed="0.000783"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:18:43.648915" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:18:43.648179" elapsed="0.000854"/>
</kw>
<status status="PASS" start="2026-10-20T23:18:43.647783" elapsed="0.001323"/>
</branch>
<status status="PASS" start="2026-10-20T23:18:43.646895" elapsed="0.002256"/>
</if>
<if>
<branch type="IF" condition="&quot;${check_for_null}&quot; == &quot;True&quot;">
<if>
<branch type="IF" condition="${resp.status_code} == 404 or ${resp.status_code} == 409">
<return>
<status status="NOT RUN" start="2026-10-20T23:18:43.650118" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:18:43.650038" elapsed="0.000170"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:18:43.650003" elapsed="0.000252"/>
</if>
<status status="NOT RUN" start="2026-10-20T23:18:43.649270" elapsed="0.001034"/>
</branch>
<status status="PASS" start="2026-10-20T23:18:43.649236" elapsed="0.001146"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:18:43.651096" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:18:43.650680" elapsed="0.001180">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` contains the `item`.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:43.652474" elapsed="0.000047"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:18:43.652149" elapsed="0.000447"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:18:43.652031" elapsed="0.000623"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/flow-node-inventory:table=2?content=nonconfig</arg>
<arg>${elements}</arg>
<doc>A GET is made at the supplied ${uri} and every item in the list of
['10.0.20.1'] is verified to NOT exist in the response. If ${check_for_null} is True
return of 404 is treated as empty list. From Neon onwards, an empty list is always
returned as null, giving 404 on rest call.</doc>
<status status="FAIL" start="2026-10-20T23:18:43.639273" elapsed="0.013573">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements Not At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:18:45.664904" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:18:45.665055" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '448'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:18:45.665271" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:18:45.659111" elapsed="0.006245"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:18:45.666140" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:18:45.665543" elapsed="0.000719"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:18:45.667426" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:18:45.666713" elapsed="0.000926"/>
</kw>
<status status="PASS" start="2026-10-20T23:18:45.666350" elapsed="0.001364"/>
</branch>
<status status="PASS" start="2026-10-20T23:18:45.665495" elapsed="0.002265"/>
</if>
<if>
<branch type="IF" condition="&quot;${check_for_null}&quot; == &quot;True&quot;">
<if>
<branch type="IF" condition="${resp.status_code} == 404 or ${resp.status_code} == 409">
<return>
<status status="NOT RUN" start="2026-10-20T23:18:45.668224" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:18:45.668146" elapsed="0.000195"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:18:45.668113" elapsed="0.000280"/>
</if>
<status status="NOT RUN" start="2026-10-20T23:18:45.667879" elapsed="0.000567"/>
</branch>
<status status="PASS" start="2026-10-20T23:18:45.667844" elapsed="0.000647"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:18:45.669229" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:18:45.668812" elapsed="0.001205">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` contains the `item`.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:45.670621" elapsed="0.000047"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:18:45.670293" elapsed="0.000449"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:18:45.670160" elapsed="0.000638"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/flow-node-inventory:table=2?content=nonconfig</arg>
<arg>${elements}</arg>
<doc>A GET is made at the supplied ${uri} and every item in the list of
['10.0.20.1'] is verified to NOT exist in the response. If ${check_for_null} is True
return of 404 is treated as empty list. From Neon onwards, an empty list is always
returned as null, giving 404 on rest call.</doc>
<status status="FAIL" start="2026-10-20T23:18:45.658028" elapsed="0.012992">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements Not At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:18:47.682886" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:18:47.683034" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '448'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:18:47.683251" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:18:47.677138" elapsed="0.006199"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:18:47.684108" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:18:47.683522" elapsed="0.000707"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:18:47.685402" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:18:47.684680" elapsed="0.000840"/>
</kw>
<status status="PASS" start="2026-10-20T23:18:47.684283" elapsed="0.001309"/>
</branch>
<status status="PASS" start="2026-10-20T23:18:47.683477" elapsed="0.002161"/>
</if>
<if>
<branch type="IF" condition="&quot;${check_for_null}&quot; == &quot;True&quot;">
<if>
<branch type="IF" condition="${resp.status_code} == 404 or ${resp.status_code} == 409">
<return>
<status status="NOT RUN" start="2026-10-20T23:18:47.686089" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:18:47.686011" elapsed="0.000165"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:18:47.685955" elapsed="0.000267"/>
</if>
<status status="NOT RUN" start="2026-10-20T23:18:47.685754" elapsed="0.000516"/>
</branch>
<status status="PASS" start="2026-10-20T23:18:47.685719" elapsed="0.000624"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:18:47.687093" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:18:47.686640" elapsed="0.001216">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` contains the `item`.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:47.688469" elapsed="0.000046"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:18:47.688141" elapsed="0.000448"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:18:47.688022" elapsed="0.000620"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/flow-node-inventory:table=2?content=nonconfig</arg>
<arg>${elements}</arg>
<doc>A GET is made at the supplied ${uri} and every item in the list of
['10.0.20.1'] is verified to NOT exist in the response. If ${check_for_null} is True
return of 404 is treated as empty list. From Neon onwards, an empty list is always
returned as null, giving 404 on rest call.</doc>
<status status="FAIL" start="2026-10-20T23:18:47.676083" elapsed="0.012748">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check For Elements Not At URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:18:49.702126" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:18:49.702246" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '448'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:18:49.702525" level="INFO">${resp} = &lt;Response [404]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-20T23:18:49.695885" elapsed="0.006696"/>
</kw>
<if>
<branch type="IF" condition="&quot;${pretty_print_json}&quot; == &quot;True&quot;">
<kw name="Log Content" owner="Utils">
<arg>${resp.text}</arg>
<status status="NOT RUN" start="2026-10-20T23:18:49.703397" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:18:49.702765" elapsed="0.000755"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:18:49.704662" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:18:49.703937" elapsed="0.000843"/>
</kw>
<status status="PASS" start="2026-10-20T23:18:49.703577" elapsed="0.001276"/>
</branch>
<status status="PASS" start="2026-10-20T23:18:49.702718" elapsed="0.002181"/>
</if>
<if>
<branch type="IF" condition="&quot;${check_for_null}&quot; == &quot;True&quot;">
<if>
<branch type="IF" condition="${resp.status_code} == 404 or ${resp.status_code} == 409">
<return>
<status status="NOT RUN" start="2026-10-20T23:18:49.705395" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:18:49.705285" elapsed="0.000198"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:18:49.705253" elapsed="0.000276"/>
</if>
<status status="NOT RUN" start="2026-10-20T23:18:49.705045" elapsed="0.000532"/>
</branch>
<status status="PASS" start="2026-10-20T23:18:49.704984" elapsed="0.000636"/>
</if>
<kw name="Status Should Be" owner="RequestsLibrary">
<msg time="2026-10-20T23:18:49.706348" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2?content=nonconfig Expected status: 404 != 200</msg>
<arg>200</arg>
<arg>${resp}</arg>
<doc>Fails if response status code is different than the expected.</doc>
<status status="FAIL" start="2026-10-20T23:18:49.705912" elapsed="0.001205">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<for flavor="IN">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${i}</arg>
<doc>Fails if the `container` contains the `item`.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:49.707707" elapsed="0.000044"/>
</kw>
<var name="${i}"/>
<status status="NOT RUN" start="2026-10-20T23:18:49.707409" elapsed="0.000416"/>
</iter>
<var>${i}</var>
<value>@{elements}</value>
<status status="NOT RUN" start="2026-10-20T23:18:49.707258" elapsed="0.000623"/>
</for>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/flow-node-inventory:table=2?content=nonconfig</arg>
<arg>${elements}</arg>
<doc>A GET is made at the supplied ${uri} and every item in the list of
['10.0.20.1'] is verified to NOT exist in the response. If ${check_for_null} is True
return of 404 is treated as empty list. From Neon onwards, an empty list is always
returned as null, giving 404 on rest call.</doc>
<status status="FAIL" start="2026-10-20T23:18:49.694740" elapsed="0.013353">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<msg time="2026-10-20T23:18:49.708288" level="FAIL">Keyword 'Check For Elements Not At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2?content=nonconfig Expected status: 404 != 200</msg>
<arg>10s</arg>
<arg>2s</arg>
<arg>Check For Elements Not At URI</arg>
<arg>${RFC8040_NODES_API}/node=openflow%3A1/flow-node-inventory:table=2?content=nonconfig</arg>
<arg>${elements}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-10-20T23:18:39.598838" elapsed="10.109674">Keyword 'Check For Elements Not At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2?content=nonconfig Expected status: 404 != 200</status>
</kw>
<doc>Verify the flow</doc>
<status status="FAIL" start="2026-10-20T23:18:39.596745" elapsed="10.112081">Keyword 'Check For Elements Not At URI' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=2?content=nonconfig Expected status: 404 != 200</status>
</test>
<kw name="Delete All Sessions" owner="RequestsLibrary" type="TEARDOWN">
<msg time="2026-10-20T23:18:49.710116" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects </doc>
<status status="PASS" start="2026-10-20T23:18:49.709926" elapsed="0.000319"/>
</kw>
<doc>Test suite for RESTCONF FRM</doc>
<status status="FAIL" start="2026-10-20T23:18:19.319524" elapsed="30.390818"/>
</suite>
<kw name="Stop Mininet" owner="Utils" type="TEARDOWN">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:18:49.713583" 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-10-20T23:18:49.713049" elapsed="0.000628"/>
</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-10-20T23:18:49.714121" elapsed="0.000291"/>
</kw>
<kw name="Read" owner="SSHLibrary">
<doc>Consumes and returns everything available on the server output.</doc>
<status status="PASS" start="2026-10-20T23:18:49.714716" elapsed="0.000259"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-20T23:18:49.720522" 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-10-20T23:18:49.715288" elapsed="0.005361"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-10-20T23:18:49.970358" level="INFO">*** Stopping 1 controllers
c0 
*** Stopping 6 links
......
*** Stopping 3 switches
s1 s2 s3 
*** Stopping 4 hosts
h1 h2 h3 h4 
*** Done
completed in 232.798 seconds
[?2004h[jenkins@releng-34016-79-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-10-20T23:18:49.720976" elapsed="0.249468"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:18:49.970620" elapsed="0.000178"/>
</kw>
<doc>Cleanup/Shutdown work that should be done at the completion of all
tests</doc>
<status status="PASS" start="2026-10-20T23:18:49.712406" elapsed="0.258449"/>
</kw>
<doc>Test suite for MD-SAL NSF mininet OF13</doc>
<status status="FAIL" start="2026-10-20T23:14:54.188045" elapsed="235.782843"/>
</suite>
<suite id="s1-s3" name="Stat Manager extended" source="/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Flows_Additional_TCs/Stat_Manager_extended">
<kw name="Start Mininet" owner="Utils" type="SETUP">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:18:49.983744" level="INFO">Start the test on the base edition</msg>
<arg>Start the test on the base edition</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:18:49.983518" 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 or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:49.985706" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:18:49.985477" elapsed="0.000283"/>
</branch>
<status status="PASS" start="2026-10-20T23:18:49.985455" elapsed="0.000331"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:18:49.986128" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-10-20T23:18:49.985966" elapsed="0.000284"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:18:49.986717" level="INFO">Attempting to execute command "sudo mn -c" on remote system "10.30.170.219" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:18:49.986429" elapsed="0.000331"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:18:49.987224" level="INFO">${conn_id} = 11</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-20T23:18:49.986913" elapsed="0.000335"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-20T23:18:49.988099" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:18:49.988170" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-20T23:18:49.987704" elapsed="0.000489"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:18:49.988334" elapsed="0.000295"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:18:49.989376" level="INFO">Logging into '10.30.170.219:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:18:50.565158" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Tue Oct 20 23:18:50 UTC 2026

  System load:  0.0                Processes:             110
  Usage of /:   19.8% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.219
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

5 updates can be applied immediately.
To see these additional updates run: apt list --upgradable

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


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


Last login: Tue Oct 20 23:14:56 2026 from 10.30.170.114
[?2004h[jenkins@releng-34016-79-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-10-20T23:18:49.989128" elapsed="0.576214"/>
</kw>
<msg time="2026-10-20T23:18:50.565453" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:18:49.988769" elapsed="0.576783"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-10-20T23:18:49.987431" elapsed="0.578266"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:18:50.566341" level="INFO">Executing command 'sudo mn -c'.</msg>
<msg time="2026-10-20T23:18:51.786452" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:18:51.786768" level="INFO">${stdout} = </msg>
<msg time="2026-10-20T23:18:51.786860" 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-10-20T23:18:50.566013" elapsed="1.220999"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:18:51.787437" elapsed="0.000465"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:18:51.788953" 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-10-20T23:18:51.788374" elapsed="0.000723"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:18:51.789534" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:18:51.789262" elapsed="0.000376"/>
</branch>
<status status="PASS" start="2026-10-20T23:18:51.789215" 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-10-20T23:18:51.789983" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-10-20T23:18:51.789799" elapsed="0.000343"/>
</branch>
<status status="PASS" start="2026-10-20T23:18:51.789766" elapsed="0.000431"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:18:51.790271" 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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:18:51.791701" elapsed="0.000709"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-20T23:18:51.792769" elapsed="0.000341"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:18:51.793404" elapsed="0.000201"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-10-20T23:18:51.790917" elapsed="0.002797"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-10-20T23:18:49.985082" elapsed="1.808790"/>
</kw>
<msg time="2026-10-20T23:18:51.793980" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:18:49.984557" elapsed="1.809551"/>
</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-10-20T23:18:49.984156" elapsed="1.810118"/>
</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 or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:51.797911" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:18:51.797457" elapsed="0.000571"/>
</branch>
<status status="PASS" start="2026-10-20T23:18:51.797417" elapsed="0.000689"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:18:51.798785" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-10-20T23:18:51.798508" elapsed="0.000539"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:18:51.800130" 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.219" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:18:51.799466" elapsed="0.000766"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:18:51.801302" level="INFO">${conn_id} = 13</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-20T23:18:51.800595" elapsed="0.000794"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-20T23:18:51.803433" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:18:51.803592" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-20T23:18:51.802799" elapsed="0.000844"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:18:51.803924" elapsed="0.000736"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:18:51.806483" level="INFO">Logging into '10.30.170.219:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:18:52.175221" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Tue Oct 20 23:18:50 UTC 2026

  System load:  0.0                Processes:             110
  Usage of /:   19.8% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.219
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

5 updates can be applied immediately.
To see these additional updates run: apt list --upgradable

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


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


Last login: Tue Oct 20 23:18:50 2026 from 10.30.170.114
[?2004h[jenkins@releng-34016-79-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-10-20T23:18:51.805907" elapsed="0.369466"/>
</kw>
<msg time="2026-10-20T23:18:52.175451" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:18:51.805050" elapsed="0.370474"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-10-20T23:18:51.802144" elapsed="0.373488"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:18:52.176068" 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-10-20T23:18:52.219009" level="INFO">Command exited with return code -1.</msg>
<msg time="2026-10-20T23:18:52.219176" level="INFO">${stdout} = </msg>
<msg time="2026-10-20T23:18:52.219232" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:18:52.175863" elapsed="0.043398"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:18:52.219470" elapsed="0.000265"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:18:52.220400" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:18:52.220000" elapsed="0.000454"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:18:52.220725" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:18:52.220561" elapsed="0.000229"/>
</branch>
<status status="PASS" start="2026-10-20T23:18:52.220529" elapsed="0.000292"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-10-20T23:18:52.221003" elapsed="0.000034"/>
</return>
<status status="PASS" start="2026-10-20T23:18:52.220891" elapsed="0.000206"/>
</branch>
<status status="PASS" start="2026-10-20T23:18:52.220871" elapsed="0.000258"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:18:52.221173" elapsed="0.000018"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:18:52.222056" 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-10-20T23:18:52.222719" elapsed="0.000201"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:18:52.223096" elapsed="0.000124"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-10-20T23:18:52.221588" elapsed="0.001699"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-10-20T23:18:51.796583" elapsed="0.426823"/>
</kw>
<msg time="2026-10-20T23:18:52.223471" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:18:51.795429" elapsed="0.428103"/>
</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-10-20T23:18:51.794598" elapsed="0.429032"/>
</kw>
<status status="PASS" start="2026-10-20T23:18:49.983923" elapsed="2.239781"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:18:52.224382" level="INFO">${mininet_conn_id} = 15</msg>
<var>${mininet_conn_id}</var>
<arg>${system}</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-10-20T23:18:52.223917" elapsed="0.000499"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-20T23:18:52.225059" level="INFO">${mininet_conn_id} = 15</msg>
<arg>${mininet_conn_id}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-20T23:18:52.224659" elapsed="0.000471"/>
</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-10-20T23:18:52.227145" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:18:52.227241" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-20T23:18:52.226783" elapsed="0.000488"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:18:52.227531" elapsed="0.000666"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:18:52.229236" level="INFO">Logging into '10.30.170.219:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:18:52.577163" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Tue Oct 20 23:18:50 UTC 2026

  System load:  0.0                Processes:             110
  Usage of /:   19.8% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.219
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

5 updates can be applied immediately.
To see these additional updates run: apt list --upgradable

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


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


Last login: Tue Oct 20 23:18:52 2026 from 10.30.170.114
[?2004h[jenkins@releng-34016-79-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-10-20T23:18:52.228900" elapsed="0.348369"/>
</kw>
<msg time="2026-10-20T23:18:52.577347" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:18:52.228416" elapsed="0.348999"/>
</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-10-20T23:18:52.226287" elapsed="0.351224"/>
</kw>
<msg time="2026-10-20T23:18:52.577558" 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-10-20T23:18:52.225810" elapsed="0.351790"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<doc>Call Flexible SSH Login, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-10-20T23:18:52.225365" elapsed="0.352301"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:18:52.578001" level="INFO">Executing command 'sudo ovs-vsctl set-manager ptcp:6644'.</msg>
<msg time="2026-10-20T23:18:52.600665" 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-10-20T23:18:52.577890" elapsed="0.022860"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-20T23:18:52.637766" level="INFO">sudo mn --controller=remote,ip=10.30.170.223 --topo tree,1 --switch ovsk,protocols=OpenFlow13</msg>
<arg>${start}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-10-20T23:18:52.600967" elapsed="0.036851"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-10-20T23:18:52.832932" level="INFO">[?2004l*** Creating network
*** Adding controller
Connecting to remote controller at 10.30.170.223:6653
*** 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-10-20T23:18:52.637960" elapsed="0.195044"/>
</kw>
<doc>Basic setup/cleanup work that can be done safely before any system
is run.</doc>
<status status="PASS" start="2026-10-20T23:18:49.983128" elapsed="2.849937"/>
</kw>
<suite id="s1-s3-s1" name="010 SM add upd del flows" source="/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Flows_Additional_TCs/Stat_Manager_extended/010_SM_add_upd_del_flows.robot">
<kw name="Initialization Phase" type="SETUP">
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:18:52.946347" level="INFO">Creating Session using : alias=session, url=http://10.30.170.223:8181, headers={'Content-Type': 'application/xml'},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x756aa5518850&gt;, timeout=None, proxies=None, verify=False,                     debug=0 </msg>
<arg>session</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>headers=${HEADERS_XML}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-10-20T23:18:52.946055" elapsed="0.000469"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check Switches In Inventory" owner="FlowLib">
<for flavor="IN RANGE">
<iter>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:18:52.953204" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:18:52.953293" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:18:52.953432" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A${switch}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:18:52.947789" elapsed="0.006123">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<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-10-20T23:18:52.954143" elapsed="0.000022"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:52.954387" elapsed="0.000030"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:52.954573" elapsed="0.000019"/>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-10-20T23:18:52.947672" elapsed="0.006974">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-10-20T23:18:52.947460" elapsed="0.007244">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</for>
<arg>${1}</arg>
<doc>Check all switches and stats in operational inventory</doc>
<status status="FAIL" start="2026-10-20T23:18:52.947286" elapsed="0.007514">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Inventory" owner="FlowLib">
<for flavor="IN RANGE">
<iter>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:18:53.962435" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:18:53.962559" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:18:53.962760" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A${switch}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:18:53.956665" elapsed="0.006948">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<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-10-20T23:18:53.964096" elapsed="0.000078"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:53.964548" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:53.964931" elapsed="0.000042"/>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-10-20T23:18:53.956408" elapsed="0.008674">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-10-20T23:18:53.955896" elapsed="0.009327">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</for>
<arg>${1}</arg>
<doc>Check all switches and stats in operational inventory</doc>
<status status="FAIL" start="2026-10-20T23:18:53.955532" elapsed="0.009924">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Inventory" owner="FlowLib">
<for flavor="IN RANGE">
<iter>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:18:54.972849" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:18:54.972964" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:18:54.973191" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A${switch}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:18:54.967276" elapsed="0.006789">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<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-10-20T23:18:54.974616" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:54.974999" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:54.975419" elapsed="0.000044"/>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-10-20T23:18:54.966998" elapsed="0.008573">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-10-20T23:18:54.966545" elapsed="0.009223">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</for>
<arg>${1}</arg>
<doc>Check all switches and stats in operational inventory</doc>
<status status="FAIL" start="2026-10-20T23:18:54.966108" elapsed="0.009861">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Inventory" owner="FlowLib">
<for flavor="IN RANGE">
<iter>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:18:55.983797" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:18:55.983912" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:18:55.984126" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A${switch}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:18:55.978191" elapsed="0.006782">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<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-10-20T23:18:55.985525" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:55.985917" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:55.986339" elapsed="0.000046"/>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-10-20T23:18:55.977562" elapsed="0.008934">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-10-20T23:18:55.977073" elapsed="0.009541">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</for>
<arg>${1}</arg>
<doc>Check all switches and stats in operational inventory</doc>
<status status="FAIL" start="2026-10-20T23:18:55.976719" elapsed="0.010089">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Inventory" owner="FlowLib">
<for flavor="IN RANGE">
<iter>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:18:56.994500" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:18:56.994615" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:18:56.994815" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A${switch}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:18:56.988655" elapsed="0.007019">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<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-10-20T23:18:56.996162" elapsed="0.000077"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:56.996610" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:56.996980" elapsed="0.000042"/>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-10-20T23:18:56.988401" elapsed="0.008729">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-10-20T23:18:56.987916" elapsed="0.009357">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</for>
<arg>${1}</arg>
<doc>Check all switches and stats in operational inventory</doc>
<status status="FAIL" start="2026-10-20T23:18:56.987561" elapsed="0.009951">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Inventory" owner="FlowLib">
<for flavor="IN RANGE">
<iter>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:18:58.005192" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:18:58.005459" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:18:58.005671" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A${switch}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:18:57.999438" elapsed="0.007104">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<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-10-20T23:18:58.007027" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:58.007464" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:58.007839" elapsed="0.000041"/>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-10-20T23:18:57.999108" elapsed="0.008882">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-10-20T23:18:57.998675" elapsed="0.009433">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</for>
<arg>${1}</arg>
<doc>Check all switches and stats in operational inventory</doc>
<status status="FAIL" start="2026-10-20T23:18:57.998209" elapsed="0.010146">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Inventory" owner="FlowLib">
<for flavor="IN RANGE">
<iter>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:18:59.015794" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:18:59.015911" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:18:59.016109" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A${switch}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:18:59.010181" elapsed="0.007293">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<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-10-20T23:18:59.017960" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:59.018398" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:59.018774" elapsed="0.000042"/>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-10-20T23:18:59.009927" elapsed="0.008998">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-10-20T23:18:59.009480" elapsed="0.009563">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</for>
<arg>${1}</arg>
<doc>Check all switches and stats in operational inventory</doc>
<status status="FAIL" start="2026-10-20T23:18:59.009050" elapsed="0.010187">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Inventory" owner="FlowLib">
<for flavor="IN RANGE">
<iter>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:19:00.025035" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:19:00.025094" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:19:00.025256" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A${switch}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:19:00.021200" elapsed="0.004505">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<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-10-20T23:19:00.025950" elapsed="0.000022"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:00.026124" elapsed="0.000019"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:00.026302" elapsed="0.000033"/>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-10-20T23:19:00.021018" elapsed="0.005372">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-10-20T23:19:00.020553" elapsed="0.005891">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</for>
<arg>${1}</arg>
<doc>Check all switches and stats in operational inventory</doc>
<status status="FAIL" start="2026-10-20T23:19:00.020069" elapsed="0.006467">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Inventory" owner="FlowLib">
<for flavor="IN RANGE">
<iter>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:19:01.032325" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:19:01.032385" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:19:01.032498" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A${switch}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:19:01.028424" elapsed="0.004493">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<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-10-20T23:19:01.033163" elapsed="0.000022"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:01.033364" elapsed="0.000020"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:01.033532" elapsed="0.000019"/>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-10-20T23:19:01.028141" elapsed="0.005462">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-10-20T23:19:01.027737" elapsed="0.005921">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</for>
<arg>${1}</arg>
<doc>Check all switches and stats in operational inventory</doc>
<status status="FAIL" start="2026-10-20T23:19:01.027268" elapsed="0.006482">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Inventory" owner="FlowLib">
<for flavor="IN RANGE">
<iter>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:19:02.041522" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:19:02.041640" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:19:02.041844" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A${switch}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:19:02.035713" elapsed="0.006995">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<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-10-20T23:19:02.043192" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:02.043711" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:02.044090" elapsed="0.000043"/>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-10-20T23:19:02.035451" elapsed="0.008793">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-10-20T23:19:02.034954" elapsed="0.009459">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</for>
<arg>${1}</arg>
<doc>Check all switches and stats in operational inventory</doc>
<status status="FAIL" start="2026-10-20T23:19:02.034542" elapsed="0.010073">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<msg time="2026-10-20T23:19:02.044794" level="FAIL">Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</msg>
<arg>10x</arg>
<arg>1s</arg>
<arg>FlowLib.Check Switches In Inventory</arg>
<arg>${1}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-10-20T23:18:52.946705" elapsed="9.098280">Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<kw name="Write" owner="SSHLibrary">
<arg>dpctl dump-flows -O OpenFlow13</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:02.045402" elapsed="0.000063"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<arg>mininet&gt;</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:02.045781" elapsed="0.000042"/>
</kw>
<doc>Initiate tcp connection with controller</doc>
<status status="FAIL" start="2026-10-20T23:18:52.945402" elapsed="9.100596">Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<test id="s1-s3-s1-t1" name="Test Add Flows Group 0" line="37">
<doc>Add all flows and waits for SM to collect data</doc>
<status status="FAIL" start="2026-10-20T23:19:02.046149" elapsed="0.000953">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t2" name="Test Is Flow 1 Added" line="51">
<status status="FAIL" start="2026-10-20T23:19:02.047737" elapsed="0.001147">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t3" name="Test Is Flow 2 Added" line="53">
<status status="FAIL" start="2026-10-20T23:19:02.049486" elapsed="0.000645">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t4" name="Test Is Flow 3 Added" line="55">
<status status="FAIL" start="2026-10-20T23:19:02.050719" elapsed="0.000685">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t5" name="Test Is Flow 4 Added" line="57">
<status status="FAIL" start="2026-10-20T23:19:02.051923" elapsed="0.000683">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t6" name="Test Is Flow 5 Added" line="59">
<status status="FAIL" start="2026-10-20T23:19:02.053118" elapsed="0.000689">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t7" name="Test Is Flow 6 Added" line="61">
<status status="FAIL" start="2026-10-20T23:19:02.054369" elapsed="0.000633">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t8" name="Test Is Flow 7 Added" line="63">
<status status="FAIL" start="2026-10-20T23:19:02.055430" elapsed="0.000566">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t9" name="Test Is Flow 8 Added" line="65">
<status status="FAIL" start="2026-10-20T23:19:02.056479" elapsed="0.000700">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t10" name="Test Is Flow 9 Added" line="67">
<status status="FAIL" start="2026-10-20T23:19:02.057754" elapsed="0.000683">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t11" name="Test Is Flow 10 Added" line="69">
<status status="FAIL" start="2026-10-20T23:19:02.058981" elapsed="0.000693">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t12" name="Test Is Flow 11 Added" line="71">
<status status="FAIL" start="2026-10-20T23:19:02.060199" elapsed="0.000689">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t13" name="Test Is Flow 14 Added" line="73">
<status status="FAIL" start="2026-10-20T23:19:02.061451" elapsed="0.000651">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t14" name="Test Is Flow 15 Added" line="75">
<status status="FAIL" start="2026-10-20T23:19:02.062579" elapsed="0.000604">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t15" name="Test Is Flow 16 Added" line="77">
<status status="FAIL" start="2026-10-20T23:19:02.063666" elapsed="0.000696">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t16" name="Test Is Flow 17 Added" line="79">
<status status="FAIL" start="2026-10-20T23:19:02.064715" elapsed="0.000548">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t17" name="Test Is Flow 18 Added" line="81">
<status status="FAIL" start="2026-10-20T23:19:02.065653" elapsed="0.000548">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t18" name="Test Is Flow 19 Added" line="83">
<status status="FAIL" start="2026-10-20T23:19:02.066589" elapsed="0.000652">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t19" name="Test Is Flow 20 Added" line="85">
<status status="FAIL" start="2026-10-20T23:19:02.067646" elapsed="0.000536">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t20" name="Test Is Flow 21 Added" line="87">
<status status="FAIL" start="2026-10-20T23:19:02.068569" elapsed="0.000558">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t21" name="Test Is Flow 22 Added" line="89">
<status status="FAIL" start="2026-10-20T23:19:02.069521" elapsed="0.000530">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t22" name="Test Is Flow 23 Added" line="91">
<status status="FAIL" start="2026-10-20T23:19:02.070455" elapsed="0.000640">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t23" name="Test Is Flow 24 Added" line="93">
<status status="FAIL" start="2026-10-20T23:19:02.071495" elapsed="0.000620">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t24" name="Test Is Flow 25 Added" line="95">
<status status="FAIL" start="2026-10-20T23:19:02.072528" elapsed="0.000547">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t25" name="Test Is Flow 31 Added" line="97">
<status status="FAIL" start="2026-10-20T23:19:02.073545" elapsed="0.000634">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t26" name="Test Is Flow 36 Added" line="99">
<status status="FAIL" start="2026-10-20T23:19:02.074748" elapsed="0.000981">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t27" name="Test Is Flow 38 Added" line="101">
<status status="FAIL" start="2026-10-20T23:19:02.076254" elapsed="0.000686">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t28" name="Test Is Flow 43 Added" line="103">
<status status="FAIL" start="2026-10-20T23:19:02.077502" elapsed="0.000644">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t29" name="Test Is Flow 45 Added" line="105">
<status status="FAIL" start="2026-10-20T23:19:02.078717" elapsed="0.000670">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t30" name="Test Is Flow 101 Added" line="107">
<status status="FAIL" start="2026-10-20T23:19:02.079911" elapsed="0.000689">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t31" name="Test Is Flow 102 Added" line="109">
<status status="FAIL" start="2026-10-20T23:19:02.081002" elapsed="0.000414">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t32" name="Test Is Flow 103 Added" line="111">
<status status="FAIL" start="2026-10-20T23:19:02.081727" elapsed="0.000396">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t33" name="Test Is Flow 104 Added" line="113">
<status status="FAIL" start="2026-10-20T23:19:02.082472" elapsed="0.000390">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t34" name="Test Is Flow 105 Added" line="115">
<status status="FAIL" start="2026-10-20T23:19:02.083179" elapsed="0.000426">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t35" name="Test Is Flow 106 Added" line="117">
<status status="FAIL" start="2026-10-20T23:19:02.083946" elapsed="0.000431">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t36" name="Test Is Flow 107 Added" line="119">
<status status="FAIL" start="2026-10-20T23:19:02.084699" elapsed="0.000389">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t37" name="Test Is Flow 108 Added" line="121">
<status status="FAIL" start="2026-10-20T23:19:02.085340" elapsed="0.000341">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t38" name="Test Is Flow 109 Added" line="123">
<status status="FAIL" start="2026-10-20T23:19:02.085883" elapsed="0.000330">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t39" name="Test Is Flow 110 Added" line="125">
<status status="FAIL" start="2026-10-20T23:19:02.086459" elapsed="0.000341">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t40" name="Test Is Flow 113 Added" line="127">
<status status="FAIL" start="2026-10-20T23:19:02.087003" elapsed="0.000363">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t41" name="Test Is Flow 156 Added" line="129">
<status status="FAIL" start="2026-10-20T23:19:02.087571" elapsed="0.000339">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t42" name="Test Is Flow 201 Added" line="131">
<status status="FAIL" start="2026-10-20T23:19:02.088111" elapsed="0.000471">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t43" name="Test Is Flow 202 Added" line="133">
<status status="FAIL" start="2026-10-20T23:19:02.088898" elapsed="0.000392">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t44" name="Test Is Flow 203 Added" line="135">
<status status="FAIL" start="2026-10-20T23:19:02.089636" elapsed="0.000388">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t45" name="Test Is Flow 204 Added" line="137">
<status status="FAIL" start="2026-10-20T23:19:02.090368" elapsed="0.000398">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t46" name="Test Is Flow 205 Added" line="139">
<status status="FAIL" start="2026-10-20T23:19:02.091079" elapsed="0.000444">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t47" name="Test Is Flow 206 Added" line="141">
<status status="FAIL" start="2026-10-20T23:19:02.091842" elapsed="0.000389">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t48" name="Test Is Flow 209 Added" line="143">
<status status="FAIL" start="2026-10-20T23:19:02.092585" elapsed="0.000418">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t49" name="Test Is Flow 214 Added" line="145">
<status status="FAIL" start="2026-10-20T23:19:02.093351" elapsed="0.000396">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t50" name="Test Is Flow 218 Added" line="147">
<status status="FAIL" start="2026-10-20T23:19:02.094061" elapsed="0.000436">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t51" name="Test Is Flow 219 Added" line="149">
<status status="FAIL" start="2026-10-20T23:19:02.094816" elapsed="0.000400">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t52" name="Test Is Flow 220 Added" line="151">
<status status="FAIL" start="2026-10-20T23:19:02.095566" elapsed="0.000583">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t53" name="Test Is Flow 221 Added" line="153">
<status status="FAIL" start="2026-10-20T23:19:02.096498" elapsed="0.000404">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t54" name="Test Is Flow 222 Added" line="155">
<status status="FAIL" start="2026-10-20T23:19:02.097224" elapsed="0.000428">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t55" name="Test Is Flow 223 Added" line="157">
<status status="FAIL" start="2026-10-20T23:19:02.097971" elapsed="0.000430">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t56" name="Test Is Flow 224 Added" line="159">
<status status="FAIL" start="2026-10-20T23:19:02.098760" elapsed="0.000394">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t57" name="Test Is Flow 225 Added" line="161">
<status status="FAIL" start="2026-10-20T23:19:02.099503" elapsed="0.000388">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t58" name="Test Is Flow 550 Added" line="163">
<status status="FAIL" start="2026-10-20T23:19:02.100206" elapsed="0.000618">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t59" name="Test Update Flows Group 0" line="165">
<doc>Update all flows and waits for SM to collect data</doc>
<status status="FAIL" start="2026-10-20T23:19:02.101033" elapsed="0.000578">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t60" name="Test Is Flow 1 Updated" line="183">
<status status="FAIL" start="2026-10-20T23:19:02.101942" elapsed="0.000432">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t61" name="Test Is Flow 2 Updated" line="185">
<status status="FAIL" start="2026-10-20T23:19:02.102708" elapsed="0.000399">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t62" name="Test Is Flow 3 Updated" line="187">
<status status="FAIL" start="2026-10-20T23:19:02.103458" elapsed="0.000392">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t63" name="Test Is Flow 4 Updated" line="189">
<status status="FAIL" start="2026-10-20T23:19:02.104161" elapsed="0.000423">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t64" name="Test Is Flow 5 Updated" line="191">
<status status="FAIL" start="2026-10-20T23:19:02.104912" elapsed="0.000385">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t65" name="Test Is Flow 6 Updated" line="193">
<status status="FAIL" start="2026-10-20T23:19:02.105596" elapsed="0.000338">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t66" name="Test Is Flow 7 Updated" line="195">
<status status="FAIL" start="2026-10-20T23:19:02.106137" elapsed="0.000379">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t67" name="Test Is Flow 8 Updated" line="197">
<status status="FAIL" start="2026-10-20T23:19:02.106729" elapsed="0.000371">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t68" name="Test Is Flow 9 Updated" line="199">
<status status="FAIL" start="2026-10-20T23:19:02.107248" elapsed="0.000339">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t69" name="Test Is Flow 10 Updated" line="201">
<status status="FAIL" start="2026-10-20T23:19:02.107812" elapsed="0.000281">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t70" name="Test Is Flow 11 Updated" line="203">
<status status="FAIL" start="2026-10-20T23:19:02.108341" elapsed="0.000285">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t71" name="Test Is Flow 14 Updated" line="205">
<status status="FAIL" start="2026-10-20T23:19:02.108852" elapsed="0.000279">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t72" name="Test Is Flow 15 Updated" line="207">
<status status="FAIL" start="2026-10-20T23:19:02.109391" elapsed="0.000290">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t73" name="Test Is Flow 16 Updated" line="209">
<status status="FAIL" start="2026-10-20T23:19:02.109911" elapsed="0.000280">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t74" name="Test Is Flow 17 Updated" line="211">
<status status="FAIL" start="2026-10-20T23:19:02.110444" elapsed="0.000282">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t75" name="Test Is Flow 18 Updated" line="213">
<status status="FAIL" start="2026-10-20T23:19:02.110954" elapsed="0.000278">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t76" name="Test Is Flow 19 Updated" line="215">
<status status="FAIL" start="2026-10-20T23:19:02.111487" elapsed="0.000292">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t77" name="Test Is Flow 20 Updated" line="217">
<status status="FAIL" start="2026-10-20T23:19:02.112043" elapsed="0.000312">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t78" name="Test Is Flow 21 Updated" line="219">
<status status="FAIL" start="2026-10-20T23:19:02.112579" elapsed="0.000439">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t79" name="Test Is Flow 22 Updated" line="221">
<status status="FAIL" start="2026-10-20T23:19:02.113241" elapsed="0.000310">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t80" name="Test Is Flow 23 Updated" line="223">
<status status="FAIL" start="2026-10-20T23:19:02.113777" elapsed="0.000276">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t81" name="Test Is Flow 24 Updated" line="225">
<status status="FAIL" start="2026-10-20T23:19:02.114273" elapsed="0.000302">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t82" name="Test Is Flow 25 Updated" line="227">
<status status="FAIL" start="2026-10-20T23:19:02.114802" elapsed="0.000279">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t83" name="Test Is Flow 31 Updated" line="229">
<status status="FAIL" start="2026-10-20T23:19:02.115330" elapsed="0.000287">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t84" name="Test Is Flow 36 Updated" line="231">
<status status="FAIL" start="2026-10-20T23:19:02.115844" elapsed="0.000281">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t85" name="Test Is Flow 38 Updated" line="233">
<status status="FAIL" start="2026-10-20T23:19:02.116375" elapsed="0.000286">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t86" name="Test Is Flow 43 Updated" line="235">
<status status="FAIL" start="2026-10-20T23:19:02.116881" elapsed="0.000279">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t87" name="Test Is Flow 45 Updated" line="237">
<status status="FAIL" start="2026-10-20T23:19:02.117472" elapsed="0.000280">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t88" name="Test Is Flow 101 Updated" line="239">
<status status="FAIL" start="2026-10-20T23:19:02.117972" elapsed="0.000275">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t89" name="Test Is Flow 102 Updated" line="241">
<status status="FAIL" start="2026-10-20T23:19:02.118497" elapsed="0.000278">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t90" name="Test Is Flow 103 Updated" line="243">
<status status="FAIL" start="2026-10-20T23:19:02.119001" elapsed="0.000277">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t91" name="Test Is Flow 104 Updated" line="245">
<status status="FAIL" start="2026-10-20T23:19:02.119529" elapsed="0.000292">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t92" name="Test Is Flow 105 Updated" line="247">
<status status="FAIL" start="2026-10-20T23:19:02.120041" elapsed="0.000308">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t93" name="Test Is Flow 106 Updated" line="249">
<status status="FAIL" start="2026-10-20T23:19:02.120577" elapsed="0.000276">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t94" name="Test Is Flow 107 Updated" line="251">
<status status="FAIL" start="2026-10-20T23:19:02.121062" elapsed="0.000241">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t95" name="Test Is Flow 108 Updated" line="253">
<status status="FAIL" start="2026-10-20T23:19:02.121582" elapsed="0.000280">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t96" name="Test Is Flow 109 Updated" line="255">
<status status="FAIL" start="2026-10-20T23:19:02.122090" elapsed="0.001404">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t97" name="Test Is Flow 110 Updated" line="257">
<status status="FAIL" start="2026-10-20T23:19:02.123771" elapsed="0.000284">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t98" name="Test Is Flow 113 Updated" line="259">
<status status="FAIL" start="2026-10-20T23:19:02.124278" elapsed="0.000311">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t99" name="Test Is Flow 156 Updated" line="261">
<status status="FAIL" start="2026-10-20T23:19:02.124798" elapsed="0.000250">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t100" name="Test Is Flow 201 Updated" line="263">
<status status="FAIL" start="2026-10-20T23:19:02.125195" elapsed="0.000273">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t101" name="Test Is Flow 202 Updated" line="265">
<status status="FAIL" start="2026-10-20T23:19:02.125615" elapsed="0.000264">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t102" name="Test Is Flow 203 Updated" line="267">
<status status="FAIL" start="2026-10-20T23:19:02.126028" elapsed="0.000249">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t103" name="Test Is Flow 204 Updated" line="269">
<status status="FAIL" start="2026-10-20T23:19:02.126453" elapsed="0.000378">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t104" name="Test Is Flow 205 Updated" line="271">
<status status="FAIL" start="2026-10-20T23:19:02.126985" elapsed="0.000244">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t105" name="Test Is Flow 206 Updated" line="273">
<status status="FAIL" start="2026-10-20T23:19:02.127405" elapsed="0.000241">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t106" name="Test Is Flow 209 Updated" line="275">
<status status="FAIL" start="2026-10-20T23:19:02.127794" elapsed="0.000241">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t107" name="Test Is Flow 214 Updated" line="277">
<status status="FAIL" start="2026-10-20T23:19:02.128183" elapsed="0.000268">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t108" name="Test Is Flow 218 Updated" line="279">
<status status="FAIL" start="2026-10-20T23:19:02.128595" elapsed="0.000249">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t109" name="Test Is Flow 219 Updated" line="281">
<status status="FAIL" start="2026-10-20T23:19:02.128995" elapsed="0.000243">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t110" name="Test Is Flow 220 Updated" line="283">
<status status="FAIL" start="2026-10-20T23:19:02.129414" elapsed="0.000243">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t111" name="Test Is Flow 221 Updated" line="285">
<status status="FAIL" start="2026-10-20T23:19:02.129803" elapsed="0.000240">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t112" name="Test Is Flow 222 Updated" line="287">
<status status="FAIL" start="2026-10-20T23:19:02.130190" elapsed="0.000266">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t113" name="Test Is Flow 223 Updated" line="289">
<status status="FAIL" start="2026-10-20T23:19:02.130605" elapsed="0.000240">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t114" name="Test Is Flow 224 Updated" line="291">
<status status="FAIL" start="2026-10-20T23:19:02.130993" elapsed="0.000243">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t115" name="Test Is Flow 225 Updated" line="293">
<status status="FAIL" start="2026-10-20T23:19:02.131409" elapsed="0.000252">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t116" name="Test Is Flow 550 Updated" line="295">
<status status="FAIL" start="2026-10-20T23:19:02.131815" elapsed="0.000245">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t117" name="Test Delete Flows Group 0" line="297">
<doc>Delete all flows and waits for SM to collect data</doc>
<status status="FAIL" start="2026-10-20T23:19:02.132215" elapsed="0.000331">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t118" name="Test Is Flow 1 Deleted" line="310">
<status status="FAIL" start="2026-10-20T23:19:02.132721" elapsed="0.000247">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t119" name="Test Is Flow 2 Deleted" line="312">
<status status="FAIL" start="2026-10-20T23:19:02.133117" elapsed="0.000270">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t120" name="Test Is Flow 3 Deleted" line="314">
<status status="FAIL" start="2026-10-20T23:19:02.133538" elapsed="0.000243">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t121" name="Test Is Flow 4 Deleted" line="316">
<status status="FAIL" start="2026-10-20T23:19:02.133930" elapsed="0.000242">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t122" name="Test Is Flow 5 Deleted" line="318">
<status status="FAIL" start="2026-10-20T23:19:02.134346" elapsed="0.000246">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t123" name="Test Is Flow 6 Deleted" line="320">
<status status="FAIL" start="2026-10-20T23:19:02.134738" elapsed="0.000256">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t124" name="Test Is Flow 7 Deleted" line="322">
<status status="FAIL" start="2026-10-20T23:19:02.135176" elapsed="0.000344">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t125" name="Test Is Flow 8 Deleted" line="324">
<status status="FAIL" start="2026-10-20T23:19:02.135692" elapsed="0.000293">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t126" name="Test Is Flow 9 Deleted" line="326">
<status status="FAIL" start="2026-10-20T23:19:02.136154" elapsed="0.000327">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t127" name="Test Is Flow 10 Deleted" line="328">
<status status="FAIL" start="2026-10-20T23:19:02.136656" elapsed="0.000293">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t128" name="Test Is Flow 11 Deleted" line="330">
<status status="FAIL" start="2026-10-20T23:19:02.137123" elapsed="0.000493">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t129" name="Test Is Flow 14 Deleted" line="332">
<status status="FAIL" start="2026-10-20T23:19:02.137803" elapsed="0.000400">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t130" name="Test Is Flow 15 Deleted" line="334">
<status status="FAIL" start="2026-10-20T23:19:02.138412" elapsed="0.000307">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t131" name="Test Is Flow 16 Deleted" line="336">
<status status="FAIL" start="2026-10-20T23:19:02.138888" elapsed="0.000280">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t132" name="Test Is Flow 17 Deleted" line="338">
<status status="FAIL" start="2026-10-20T23:19:02.139374" elapsed="0.000290">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t133" name="Test Is Flow 18 Deleted" line="340">
<status status="FAIL" start="2026-10-20T23:19:02.139834" elapsed="0.000300">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t134" name="Test Is Flow 19 Deleted" line="342">
<status status="FAIL" start="2026-10-20T23:19:02.140375" elapsed="0.000298">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t135" name="Test Is Flow 20 Deleted" line="344">
<status status="FAIL" start="2026-10-20T23:19:02.140848" elapsed="0.000248">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t136" name="Test Is Flow 21 Deleted" line="346">
<status status="FAIL" start="2026-10-20T23:19:02.141244" elapsed="0.000274">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t137" name="Test Is Flow 22 Deleted" line="348">
<status status="FAIL" start="2026-10-20T23:19:02.141664" elapsed="0.000250">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t138" name="Test Is Flow 23 Deleted" line="350">
<status status="FAIL" start="2026-10-20T23:19:02.142091" elapsed="0.000272">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t139" name="Test Is Flow 24 Deleted" line="352">
<status status="FAIL" start="2026-10-20T23:19:02.142516" elapsed="0.000252">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t140" name="Test Is Flow 25 Deleted" line="354">
<status status="FAIL" start="2026-10-20T23:19:02.142919" elapsed="0.000245">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t141" name="Test Is Flow 31 Deleted" line="356">
<status status="FAIL" start="2026-10-20T23:19:02.143336" elapsed="0.000247">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t142" name="Test Is Flow 36 Deleted" line="358">
<status status="FAIL" start="2026-10-20T23:19:02.143731" elapsed="0.000243">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t143" name="Test Is Flow 38 Deleted" line="360">
<status status="FAIL" start="2026-10-20T23:19:02.144127" elapsed="0.000275">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t144" name="Test Is Flow 43 Deleted" line="362">
<status status="FAIL" start="2026-10-20T23:19:02.144552" elapsed="0.000246">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t145" name="Test Is Flow 45 Deleted" line="364">
<status status="FAIL" start="2026-10-20T23:19:02.144945" elapsed="0.000247">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t146" name="Test Is Flow 101 Deleted" line="366">
<status status="FAIL" start="2026-10-20T23:19:02.145369" elapsed="0.000244">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t147" name="Test Is Flow 102 Deleted" line="368">
<status status="FAIL" start="2026-10-20T23:19:02.145762" elapsed="0.000244">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t148" name="Test Is Flow 103 Deleted" line="370">
<status status="FAIL" start="2026-10-20T23:19:02.146154" elapsed="0.000277">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t149" name="Test Is Flow 104 Deleted" line="372">
<status status="FAIL" start="2026-10-20T23:19:02.146580" elapsed="0.000250">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t150" name="Test Is Flow 105 Deleted" line="374">
<status status="FAIL" start="2026-10-20T23:19:02.146978" elapsed="0.000250">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t151" name="Test Is Flow 106 Deleted" line="376">
<status status="FAIL" start="2026-10-20T23:19:02.147402" elapsed="0.000252">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t152" name="Test Is Flow 107 Deleted" line="378">
<status status="FAIL" start="2026-10-20T23:19:02.147804" elapsed="0.000244">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t153" name="Test Is Flow 108 Deleted" line="380">
<status status="FAIL" start="2026-10-20T23:19:02.148196" elapsed="0.000416">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t154" name="Test Is Flow 109 Deleted" line="382">
<status status="FAIL" start="2026-10-20T23:19:02.148761" elapsed="0.000243">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t155" name="Test Is Flow 110 Deleted" line="384">
<status status="FAIL" start="2026-10-20T23:19:02.149153" elapsed="0.000279">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t156" name="Test Is Flow 113 Deleted" line="386">
<status status="FAIL" start="2026-10-20T23:19:02.149582" elapsed="0.000243">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t157" name="Test Is Flow 156 Deleted" line="388">
<status status="FAIL" start="2026-10-20T23:19:02.149979" elapsed="0.000243">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t158" name="Test Is Flow 201 Deleted" line="390">
<status status="FAIL" start="2026-10-20T23:19:02.150395" elapsed="0.000246">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t159" name="Test Is Flow 202 Deleted" line="392">
<status status="FAIL" start="2026-10-20T23:19:02.150818" elapsed="0.000246">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t160" name="Test Is Flow 203 Deleted" line="394">
<status status="FAIL" start="2026-10-20T23:19:02.151213" elapsed="0.000272">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t161" name="Test Is Flow 204 Deleted" line="396">
<status status="FAIL" start="2026-10-20T23:19:02.151635" elapsed="0.000242">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t162" name="Test Is Flow 205 Deleted" line="398">
<status status="FAIL" start="2026-10-20T23:19:02.152026" elapsed="0.000242">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t163" name="Test Is Flow 206 Deleted" line="400">
<status status="FAIL" start="2026-10-20T23:19:02.152445" elapsed="0.000248">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t164" name="Test Is Flow 209 Deleted" line="402">
<status status="FAIL" start="2026-10-20T23:19:02.152842" elapsed="0.000243">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t165" name="Test Is Flow 214 Deleted" line="404">
<status status="FAIL" start="2026-10-20T23:19:02.153234" elapsed="0.000272">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t166" name="Test Is Flow 218 Deleted" line="406">
<status status="FAIL" start="2026-10-20T23:19:02.153655" elapsed="0.000248">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t167" name="Test Is Flow 219 Deleted" line="408">
<status status="FAIL" start="2026-10-20T23:19:02.154052" elapsed="0.000241">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t168" name="Test Is Flow 220 Deleted" line="410">
<status status="FAIL" start="2026-10-20T23:19:02.154472" elapsed="0.000254">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t169" name="Test Is Flow 221 Deleted" line="412">
<status status="FAIL" start="2026-10-20T23:19:02.154875" elapsed="0.000242">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t170" name="Test Is Flow 222 Deleted" line="414">
<status status="FAIL" start="2026-10-20T23:19:02.155273" elapsed="0.000268">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t171" name="Test Is Flow 223 Deleted" line="416">
<status status="FAIL" start="2026-10-20T23:19:02.155689" elapsed="0.000246">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t172" name="Test Is Flow 224 Deleted" line="418">
<status status="FAIL" start="2026-10-20T23:19:02.156084" elapsed="0.000279">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t173" name="Test Is Flow 225 Deleted" line="420">
<status status="FAIL" start="2026-10-20T23:19:02.156514" elapsed="0.000256">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s1-t174" name="Test Is Flow 550 Deleted" line="422">
<status status="FAIL" start="2026-10-20T23:19:02.156919" elapsed="0.000335">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<kw name="Delete All Sessions" owner="RequestsLibrary" type="TEARDOWN">
<msg time="2026-10-20T23:19:02.158208" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects </doc>
<status status="PASS" start="2026-10-20T23:19:02.158070" elapsed="0.000272"/>
</kw>
<doc>Test suite for Stats Manager flows collection</doc>
<status status="FAIL" start="2026-10-20T23:18:52.833139" elapsed="9.325244">Suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</suite>
<suite id="s1-s3-s2" name="020 SM sal add upd del flows" source="/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Flows_Additional_TCs/Stat_Manager_extended/020_SM_sal_add_upd_del_flows.robot">
<kw name="Initialization Phase" type="SETUP">
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:19:02.175496" level="INFO">Creating Session using : alias=session, url=http://10.30.170.223:8181, headers={'Content-Type': 'application/xml'},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x756aa4f7e3d0&gt;, timeout=None, proxies=None, verify=False,                     debug=0 </msg>
<arg>session</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>headers=${HEADERS_XML}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-10-20T23:19:02.175219" elapsed="0.000420"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check Switches In Inventory" owner="FlowLib">
<for flavor="IN RANGE">
<iter>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:19:02.182026" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:19:02.182080" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:19:02.182275" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A${switch}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:19:02.176869" elapsed="0.005881">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<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-10-20T23:19:02.183008" elapsed="0.000025"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:02.183185" elapsed="0.000019"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:02.183391" elapsed="0.000020"/>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-10-20T23:19:02.176750" elapsed="0.006717">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-10-20T23:19:02.176521" elapsed="0.007000">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</for>
<arg>${1}</arg>
<doc>Check all switches and stats in operational inventory</doc>
<status status="FAIL" start="2026-10-20T23:19:02.176371" elapsed="0.007245">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Inventory" owner="FlowLib">
<for flavor="IN RANGE">
<iter>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:19:03.191609" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:19:03.191732" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:19:03.191953" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A${switch}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:19:03.185811" elapsed="0.007064">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<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-10-20T23:19:03.193434" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:03.193828" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:03.194204" elapsed="0.000042"/>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-10-20T23:19:03.185537" elapsed="0.008873">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-10-20T23:19:03.185010" elapsed="0.009525">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</for>
<arg>${1}</arg>
<doc>Check all switches and stats in operational inventory</doc>
<status status="FAIL" start="2026-10-20T23:19:03.184507" elapsed="0.010233">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Inventory" owner="FlowLib">
<for flavor="IN RANGE">
<iter>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:19:04.202839" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:19:04.203050" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:19:04.203283" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A${switch}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:19:04.196805" elapsed="0.007374">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<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-10-20T23:19:04.204729" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:04.205121" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:04.205559" elapsed="0.000044"/>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-10-20T23:19:04.196539" elapsed="0.009179">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-10-20T23:19:04.196025" elapsed="0.009814">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</for>
<arg>${1}</arg>
<doc>Check all switches and stats in operational inventory</doc>
<status status="FAIL" start="2026-10-20T23:19:04.195584" elapsed="0.010455">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Inventory" owner="FlowLib">
<for flavor="IN RANGE">
<iter>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:19:05.213833" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:19:05.213952" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:19:05.214164" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A${switch}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:19:05.208179" elapsed="0.006870">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<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-10-20T23:19:05.215601" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:05.215987" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:05.216387" elapsed="0.000063"/>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-10-20T23:19:05.207918" elapsed="0.008644">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-10-20T23:19:05.207449" elapsed="0.009232">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</for>
<arg>${1}</arg>
<doc>Check all switches and stats in operational inventory</doc>
<status status="FAIL" start="2026-10-20T23:19:05.206944" elapsed="0.009936">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Inventory" owner="FlowLib">
<for flavor="IN RANGE">
<iter>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:19:06.222975" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:19:06.223054" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:19:06.223265" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A${switch}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:19:06.218414" elapsed="0.005454">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<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-10-20T23:19:06.224196" elapsed="0.000030"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:06.224486" elapsed="0.000029"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:06.224726" elapsed="0.000027"/>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-10-20T23:19:06.218219" elapsed="0.006607">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-10-20T23:19:06.217906" elapsed="0.006997">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</for>
<arg>${1}</arg>
<doc>Check all switches and stats in operational inventory</doc>
<status status="FAIL" start="2026-10-20T23:19:06.217561" elapsed="0.007541">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Inventory" owner="FlowLib">
<for flavor="IN RANGE">
<iter>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:19:07.233042" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:19:07.233165" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:19:07.233421" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A${switch}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:19:07.227303" elapsed="0.007073">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<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-10-20T23:19:07.234900" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:07.235285" elapsed="0.000076"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:07.235715" elapsed="0.000043"/>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-10-20T23:19:07.227036" elapsed="0.008834">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-10-20T23:19:07.226561" elapsed="0.009427">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</for>
<arg>${1}</arg>
<doc>Check all switches and stats in operational inventory</doc>
<status status="FAIL" start="2026-10-20T23:19:07.226029" elapsed="0.010160">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Inventory" owner="FlowLib">
<for flavor="IN RANGE">
<iter>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:19:08.244857" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:19:08.244978" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:19:08.245209" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A${switch}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:19:08.239090" elapsed="0.007013">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<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-10-20T23:19:08.246661" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:08.247141" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:08.247577" elapsed="0.000044"/>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-10-20T23:19:08.238815" elapsed="0.008920">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-10-20T23:19:08.237676" elapsed="0.010177">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</for>
<arg>${1}</arg>
<doc>Check all switches and stats in operational inventory</doc>
<status status="FAIL" start="2026-10-20T23:19:08.237104" elapsed="0.011019">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Inventory" owner="FlowLib">
<for flavor="IN RANGE">
<iter>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:19:09.256252" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:19:09.256415" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:19:09.256660" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A${switch}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:19:09.250404" elapsed="0.007168">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<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-10-20T23:19:09.258080" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:09.258529" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:09.258908" elapsed="0.000042"/>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-10-20T23:19:09.250105" elapsed="0.008958">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-10-20T23:19:09.249621" elapsed="0.009560">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</for>
<arg>${1}</arg>
<doc>Check all switches and stats in operational inventory</doc>
<status status="FAIL" start="2026-10-20T23:19:09.249053" elapsed="0.010364">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Inventory" owner="FlowLib">
<for flavor="IN RANGE">
<iter>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:19:10.267421" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:19:10.267572" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:19:10.267790" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A${switch}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:19:10.261721" elapsed="0.006976">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<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-10-20T23:19:10.269193" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:10.269637" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:10.270167" elapsed="0.000062"/>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-10-20T23:19:10.261431" elapsed="0.009008">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-10-20T23:19:10.260923" elapsed="0.009853">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</for>
<arg>${1}</arg>
<doc>Check all switches and stats in operational inventory</doc>
<status status="FAIL" start="2026-10-20T23:19:10.260400" elapsed="0.010604">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Inventory" owner="FlowLib">
<for flavor="IN RANGE">
<iter>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:19:11.279293" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:19:11.279482" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:19:11.279749" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=openflow%3A${switch}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:19:11.273282" elapsed="0.007405">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<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-10-20T23:19:11.281184" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-capable-node-connector-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:11.281649" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>flow-table-statistics</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:11.282022" elapsed="0.000042"/>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-10-20T23:19:11.273015" elapsed="0.009160">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-10-20T23:19:11.272527" elapsed="0.009766">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</for>
<arg>${1}</arg>
<doc>Check all switches and stats in operational inventory</doc>
<status status="FAIL" start="2026-10-20T23:19:11.272028" elapsed="0.010499">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<msg time="2026-10-20T23:19:11.282728" level="FAIL">Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</msg>
<arg>10x</arg>
<arg>1s</arg>
<arg>FlowLib.Check Switches In Inventory</arg>
<arg>${1}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-10-20T23:19:02.175845" elapsed="9.107076">Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<kw name="Write" owner="SSHLibrary">
<arg>dpctl dump-flows -O OpenFlow13</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:11.283822" elapsed="0.000049"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<arg>mininet&gt;</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:11.284190" elapsed="0.000042"/>
</kw>
<doc>Initiate tcp connection with controller</doc>
<status status="FAIL" start="2026-10-20T23:19:02.174980" elapsed="9.109455">Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</kw>
<test id="s1-s3-s2-t1" name="Test Add Flows Group 0" line="36">
<doc>Add all flows and waits for SM to collect data</doc>
<status status="FAIL" start="2026-10-20T23:19:11.284596" elapsed="0.000796">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t2" name="Test Is Flow 1 Added" line="50">
<status status="FAIL" start="2026-10-20T23:19:11.285777" elapsed="0.000609">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t3" name="Test Is Flow 2 Added" line="52">
<status status="FAIL" start="2026-10-20T23:19:11.286763" elapsed="0.000577">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t4" name="Test Is Flow 3 Added" line="54">
<status status="FAIL" start="2026-10-20T23:19:11.287708" elapsed="0.000545">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t5" name="Test Is Flow 4 Added" line="56">
<status status="FAIL" start="2026-10-20T23:19:11.288646" elapsed="0.000543">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t6" name="Test Is Flow 5 Added" line="58">
<status status="FAIL" start="2026-10-20T23:19:11.289586" elapsed="0.000543">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t7" name="Test Is Flow 6 Added" line="60">
<status status="FAIL" start="2026-10-20T23:19:11.290587" elapsed="0.000550">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t8" name="Test Is Flow 7 Added" line="62">
<status status="FAIL" start="2026-10-20T23:19:11.291537" elapsed="0.000568">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t9" name="Test Is Flow 8 Added" line="64">
<status status="FAIL" start="2026-10-20T23:19:11.292474" elapsed="0.000560">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t10" name="Test Is Flow 9 Added" line="66">
<status status="FAIL" start="2026-10-20T23:19:11.293403" elapsed="0.000570">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t11" name="Test Is Flow 10 Added" line="68">
<status status="FAIL" start="2026-10-20T23:19:11.294338" elapsed="0.000569">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t12" name="Test Is Flow 11 Added" line="70">
<status status="FAIL" start="2026-10-20T23:19:11.295243" elapsed="0.000591">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t13" name="Test Is Flow 15 Added" line="72">
<status status="FAIL" start="2026-10-20T23:19:11.296169" elapsed="0.000591">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t14" name="Test Is Flow 16 Added" line="74">
<status status="FAIL" start="2026-10-20T23:19:11.297095" elapsed="0.000595">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t15" name="Test Is Flow 17 Added" line="76">
<status status="FAIL" start="2026-10-20T23:19:11.298025" elapsed="0.000586">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t16" name="Test Is Flow 18 Added" line="78">
<status status="FAIL" start="2026-10-20T23:19:11.298944" elapsed="0.000566">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t17" name="Test Is Flow 19 Added" line="80">
<status status="FAIL" start="2026-10-20T23:19:11.299863" elapsed="0.000562">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t18" name="Test Is Flow 20 Added" line="82">
<status status="FAIL" start="2026-10-20T23:19:11.300784" elapsed="0.000580">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t19" name="Test Is Flow 21 Added" line="84">
<status status="FAIL" start="2026-10-20T23:19:11.301724" elapsed="0.000534">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t20" name="Test Is Flow 22 Added" line="86">
<status status="FAIL" start="2026-10-20T23:19:11.302643" elapsed="0.000551">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t21" name="Test Is Flow 23 Added" line="88">
<status status="FAIL" start="2026-10-20T23:19:11.303586" elapsed="0.000546">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t22" name="Test Is Flow 24 Added" line="90">
<status status="FAIL" start="2026-10-20T23:19:11.304496" elapsed="0.000563">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t23" name="Test Is Flow 25 Added" line="92">
<status status="FAIL" start="2026-10-20T23:19:11.305426" elapsed="0.000581">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t24" name="Test Is Flow 31 Added" line="94">
<status status="FAIL" start="2026-10-20T23:19:11.306369" elapsed="0.000563">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t25" name="Test Is Flow 36 Added" line="96">
<status status="FAIL" start="2026-10-20T23:19:11.307262" elapsed="0.000920">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t26" name="Test Is Flow 38 Added" line="98">
<status status="FAIL" start="2026-10-20T23:19:11.308548" elapsed="0.000556">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t27" name="Test Is Flow 43 Added" line="100">
<status status="FAIL" start="2026-10-20T23:19:11.309469" elapsed="0.000622">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t28" name="Test Is Flow 45 Added" line="102">
<status status="FAIL" start="2026-10-20T23:19:11.310700" elapsed="0.000726">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t29" name="Test Is Flow 101 Added" line="104">
<status status="FAIL" start="2026-10-20T23:19:11.311797" elapsed="0.000581">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t30" name="Test Is Flow 102 Added" line="106">
<status status="FAIL" start="2026-10-20T23:19:11.312753" elapsed="0.000536">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t31" name="Test Is Flow 103 Added" line="108">
<status status="FAIL" start="2026-10-20T23:19:11.313679" elapsed="0.000539">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t32" name="Test Is Flow 104 Added" line="110">
<status status="FAIL" start="2026-10-20T23:19:11.314606" elapsed="0.000545">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t33" name="Test Is Flow 105 Added" line="112">
<status status="FAIL" start="2026-10-20T23:19:11.315515" elapsed="0.000563">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t34" name="Test Is Flow 106 Added" line="114">
<status status="FAIL" start="2026-10-20T23:19:11.316436" elapsed="0.000561">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t35" name="Test Is Flow 107 Added" line="116">
<status status="FAIL" start="2026-10-20T23:19:11.317395" elapsed="0.000576">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t36" name="Test Is Flow 108 Added" line="118">
<status status="FAIL" start="2026-10-20T23:19:11.318298" elapsed="0.000451">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t37" name="Test Is Flow 109 Added" line="120">
<status status="FAIL" start="2026-10-20T23:19:11.318959" elapsed="0.000335">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t38" name="Test Is Flow 110 Added" line="122">
<status status="FAIL" start="2026-10-20T23:19:11.319523" elapsed="0.000360">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t39" name="Test Is Flow 113 Added" line="124">
<status status="FAIL" start="2026-10-20T23:19:11.320090" elapsed="0.000353">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t40" name="Test Is Flow 201 Added" line="126">
<status status="FAIL" start="2026-10-20T23:19:11.320669" elapsed="0.000334">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t41" name="Test Is Flow 202 Added" line="128">
<status status="FAIL" start="2026-10-20T23:19:11.321205" elapsed="0.000373">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t42" name="Test Is Flow 203 Added" line="130">
<status status="FAIL" start="2026-10-20T23:19:11.321787" elapsed="0.000332">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t43" name="Test Is Flow 204 Added" line="132">
<status status="FAIL" start="2026-10-20T23:19:11.322343" elapsed="0.000400">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t44" name="Test Is Flow 205 Added" line="134">
<status status="FAIL" start="2026-10-20T23:19:11.322962" elapsed="0.000335">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t45" name="Test Is Flow 206 Added" line="136">
<status status="FAIL" start="2026-10-20T23:19:11.323524" elapsed="0.000362">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t46" name="Test Is Flow 209 Added" line="138">
<status status="FAIL" start="2026-10-20T23:19:11.324089" elapsed="0.000366">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t47" name="Test Is Flow 214 Added" line="140">
<status status="FAIL" start="2026-10-20T23:19:11.324680" elapsed="0.000347">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t48" name="Test Is Flow 218 Added" line="142">
<status status="FAIL" start="2026-10-20T23:19:11.325242" elapsed="0.000392">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t49" name="Test Is Flow 219 Added" line="144">
<status status="FAIL" start="2026-10-20T23:19:11.325875" elapsed="0.000341">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t50" name="Test Is Flow 220 Added" line="146">
<status status="FAIL" start="2026-10-20T23:19:11.326446" elapsed="0.000359">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t51" name="Test Update Flows Group 0" line="148">
<doc>Update all flows and waits for SM to collect data</doc>
<status status="FAIL" start="2026-10-20T23:19:11.327013" elapsed="0.000656">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t52" name="Test Is Flow 1 Updated" line="161">
<status status="FAIL" start="2026-10-20T23:19:11.327882" elapsed="0.000333">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t53" name="Test Is Flow 2 Updated" line="163">
<status status="FAIL" start="2026-10-20T23:19:11.328443" elapsed="0.000363">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t54" name="Test Is Flow 3 Updated" line="165">
<status status="FAIL" start="2026-10-20T23:19:11.329014" elapsed="0.000354">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t55" name="Test Is Flow 4 Updated" line="167">
<status status="FAIL" start="2026-10-20T23:19:11.329593" elapsed="0.000336">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t56" name="Test Is Flow 5 Updated" line="169">
<status status="FAIL" start="2026-10-20T23:19:11.330132" elapsed="0.000357">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t57" name="Test Is Flow 6 Updated" line="171">
<status status="FAIL" start="2026-10-20T23:19:11.330722" elapsed="0.000335">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t58" name="Test Is Flow 7 Updated" line="173">
<status status="FAIL" start="2026-10-20T23:19:11.331265" elapsed="0.000376">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t59" name="Test Is Flow 8 Updated" line="175">
<status status="FAIL" start="2026-10-20T23:19:11.331851" elapsed="0.000337">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t60" name="Test Is Flow 9 Updated" line="177">
<status status="FAIL" start="2026-10-20T23:19:11.332416" elapsed="0.000355">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t61" name="Test Is Flow 10 Updated" line="179">
<status status="FAIL" start="2026-10-20T23:19:11.332988" elapsed="0.000357">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t62" name="Test Is Flow 11 Updated" line="181">
<status status="FAIL" start="2026-10-20T23:19:11.333570" elapsed="0.000349">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t63" name="Test Is Flow 14 Updated" line="183">
<status status="FAIL" start="2026-10-20T23:19:11.334123" elapsed="0.000357">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t64" name="Test Is Flow 15 Updated" line="185">
<status status="FAIL" start="2026-10-20T23:19:11.334707" elapsed="0.000338">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t65" name="Test Is Flow 16 Updated" line="187">
<status status="FAIL" start="2026-10-20T23:19:11.335247" elapsed="0.000374">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t66" name="Test Is Flow 17 Updated" line="189">
<status status="FAIL" start="2026-10-20T23:19:11.335829" elapsed="0.000345">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t67" name="Test Is Flow 18 Updated" line="191">
<status status="FAIL" start="2026-10-20T23:19:11.336401" elapsed="0.000355">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t68" name="Test Is Flow 19 Updated" line="193">
<status status="FAIL" start="2026-10-20T23:19:11.336959" elapsed="0.000343">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t69" name="Test Is Flow 20 Updated" line="195">
<status status="FAIL" start="2026-10-20T23:19:11.337529" elapsed="0.000351">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t70" name="Test Is Flow 21 Updated" line="197">
<status status="FAIL" start="2026-10-20T23:19:11.338117" elapsed="0.000361">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t71" name="Test Is Flow 22 Updated" line="199">
<status status="FAIL" start="2026-10-20T23:19:11.338702" elapsed="0.000344">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t72" name="Test Is Flow 23 Updated" line="201">
<status status="FAIL" start="2026-10-20T23:19:11.339249" elapsed="0.000382">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t73" name="Test Is Flow 24 Updated" line="203">
<status status="FAIL" start="2026-10-20T23:19:11.339835" elapsed="0.000343">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t74" name="Test Is Flow 25 Updated" line="205">
<status status="FAIL" start="2026-10-20T23:19:11.340416" elapsed="0.000356">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t75" name="Test Is Flow 31 Updated" line="207">
<status status="FAIL" start="2026-10-20T23:19:11.340974" elapsed="0.000369">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t76" name="Test Is Flow 36 Updated" line="209">
<status status="FAIL" start="2026-10-20T23:19:11.341567" elapsed="0.000528">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t77" name="Test Is Flow 38 Updated" line="211">
<status status="FAIL" start="2026-10-20T23:19:11.342303" elapsed="0.000375">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t78" name="Test Is Flow 43 Updated" line="213">
<status status="FAIL" start="2026-10-20T23:19:11.342888" elapsed="0.000345">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t79" name="Test Is Flow 45 Updated" line="215">
<status status="FAIL" start="2026-10-20T23:19:11.343465" elapsed="0.000353">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t80" name="Test Is Flow 101 Updated" line="217">
<status status="FAIL" start="2026-10-20T23:19:11.344026" elapsed="0.000382">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t81" name="Test Is Flow 102 Updated" line="219">
<status status="FAIL" start="2026-10-20T23:19:11.344657" elapsed="0.000250">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t82" name="Test Is Flow 103 Updated" line="221">
<status status="FAIL" start="2026-10-20T23:19:11.345055" elapsed="0.000240">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t83" name="Test Is Flow 104 Updated" line="223">
<status status="FAIL" start="2026-10-20T23:19:11.345460" elapsed="0.000256">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t84" name="Test Is Flow 105 Updated" line="225">
<status status="FAIL" start="2026-10-20T23:19:11.345864" elapsed="0.000242">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t85" name="Test Is Flow 106 Updated" line="227">
<status status="FAIL" start="2026-10-20T23:19:11.346255" elapsed="0.000263">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t86" name="Test Is Flow 107 Updated" line="229">
<status status="FAIL" start="2026-10-20T23:19:11.346680" elapsed="0.000245">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t87" name="Test Is Flow 108 Updated" line="231">
<status status="FAIL" start="2026-10-20T23:19:11.347073" elapsed="0.000270">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t88" name="Test Is Flow 109 Updated" line="233">
<status status="FAIL" start="2026-10-20T23:19:11.347499" elapsed="0.000258">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t89" name="Test Is Flow 110 Updated" line="235">
<status status="FAIL" start="2026-10-20T23:19:11.347905" elapsed="0.000242">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t90" name="Test Is Flow 113 Updated" line="237">
<status status="FAIL" start="2026-10-20T23:19:11.348332" elapsed="0.000260">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t91" name="Test Is Flow 201 Updated" line="239">
<status status="FAIL" start="2026-10-20T23:19:11.348743" elapsed="0.000248">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t92" name="Test Is Flow 202 Updated" line="241">
<status status="FAIL" start="2026-10-20T23:19:11.349134" elapsed="0.000255">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t93" name="Test Is Flow 203 Updated" line="243">
<status status="FAIL" start="2026-10-20T23:19:11.349535" elapsed="0.000256">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t94" name="Test Is Flow 204 Updated" line="245">
<status status="FAIL" start="2026-10-20T23:19:11.349939" elapsed="0.000240">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t95" name="Test Is Flow 205 Updated" line="247">
<status status="FAIL" start="2026-10-20T23:19:11.350345" elapsed="0.000256">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t96" name="Test Is Flow 206 Updated" line="249">
<status status="FAIL" start="2026-10-20T23:19:11.350749" elapsed="0.000255">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t97" name="Test Is Flow 209 Updated" line="251">
<status status="FAIL" start="2026-10-20T23:19:11.351156" elapsed="0.000263">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t98" name="Test Is Flow 214 Updated" line="253">
<status status="FAIL" start="2026-10-20T23:19:11.351580" elapsed="0.000243">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t99" name="Test Is Flow 218 Updated" line="255">
<status status="FAIL" start="2026-10-20T23:19:11.351969" elapsed="0.000249">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t100" name="Test Is Flow 219 Updated" line="257">
<status status="FAIL" start="2026-10-20T23:19:11.352380" elapsed="0.000255">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t101" name="Test Is Flow 220 Updated" line="259">
<status status="FAIL" start="2026-10-20T23:19:11.352790" elapsed="0.000378">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t102" name="Test Delete Flows Group 0" line="261">
<doc>Delete all flows and waits for SM to collect data</doc>
<status status="FAIL" start="2026-10-20T23:19:11.353330" elapsed="0.000311">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t103" name="Test Is Flow 1 Deleted" line="274">
<status status="FAIL" start="2026-10-20T23:19:11.353792" elapsed="0.000240">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t104" name="Test Is Flow 2 Deleted" line="276">
<status status="FAIL" start="2026-10-20T23:19:11.354180" elapsed="0.000265">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t105" name="Test Is Flow 3 Deleted" line="278">
<status status="FAIL" start="2026-10-20T23:19:11.354609" elapsed="0.000242">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t106" name="Test Is Flow 4 Deleted" line="280">
<status status="FAIL" start="2026-10-20T23:19:11.355000" elapsed="0.000247">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t107" name="Test Is Flow 5 Deleted" line="282">
<status status="FAIL" start="2026-10-20T23:19:11.355408" elapsed="0.000264">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t108" name="Test Is Flow 6 Deleted" line="284">
<status status="FAIL" start="2026-10-20T23:19:11.355826" elapsed="0.000242">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t109" name="Test Is Flow 7 Deleted" line="286">
<status status="FAIL" start="2026-10-20T23:19:11.356215" elapsed="0.000257">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t110" name="Test Is Flow 8 Deleted" line="288">
<status status="FAIL" start="2026-10-20T23:19:11.356632" elapsed="0.000269">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t111" name="Test Is Flow 9 Deleted" line="290">
<status status="FAIL" start="2026-10-20T23:19:11.357051" elapsed="0.000248">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t112" name="Test Is Flow 10 Deleted" line="292">
<status status="FAIL" start="2026-10-20T23:19:11.357465" elapsed="0.000257">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t113" name="Test Is Flow 11 Deleted" line="294">
<status status="FAIL" start="2026-10-20T23:19:11.357871" elapsed="0.000243">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t114" name="Test Is Flow 14 Deleted" line="296">
<status status="FAIL" start="2026-10-20T23:19:11.358269" elapsed="0.000259">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t115" name="Test Is Flow 15 Deleted" line="298">
<status status="FAIL" start="2026-10-20T23:19:11.358689" elapsed="0.000240">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t116" name="Test Is Flow 16 Deleted" line="300">
<status status="FAIL" start="2026-10-20T23:19:11.359077" elapsed="0.000258">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t117" name="Test Is Flow 17 Deleted" line="302">
<status status="FAIL" start="2026-10-20T23:19:11.359485" elapsed="0.000262">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t118" name="Test Is Flow 18 Deleted" line="304">
<status status="FAIL" start="2026-10-20T23:19:11.359895" elapsed="0.000240">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t119" name="Test Is Flow 19 Deleted" line="306">
<status status="FAIL" start="2026-10-20T23:19:11.360283" elapsed="0.000258">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t120" name="Test Is Flow 20 Deleted" line="308">
<status status="FAIL" start="2026-10-20T23:19:11.360698" elapsed="0.000253">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t121" name="Test Is Flow 21 Deleted" line="310">
<status status="FAIL" start="2026-10-20T23:19:11.361098" elapsed="0.000256">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t122" name="Test Is Flow 22 Deleted" line="312">
<status status="FAIL" start="2026-10-20T23:19:11.361501" elapsed="0.000262">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t123" name="Test Is Flow 23 Deleted" line="314">
<status status="FAIL" start="2026-10-20T23:19:11.361912" elapsed="0.000240">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t124" name="Test Is Flow 24 Deleted" line="316">
<status status="FAIL" start="2026-10-20T23:19:11.362296" elapsed="0.000275">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t125" name="Test Is Flow 25 Deleted" line="318">
<status status="FAIL" start="2026-10-20T23:19:11.362720" elapsed="0.000248">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t126" name="Test Is Flow 31 Deleted" line="320">
<status status="FAIL" start="2026-10-20T23:19:11.363116" elapsed="0.000394">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t127" name="Test Is Flow 36 Deleted" line="322">
<status status="FAIL" start="2026-10-20T23:19:11.363676" elapsed="0.000242">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t128" name="Test Is Flow 38 Deleted" line="324">
<status status="FAIL" start="2026-10-20T23:19:11.364065" elapsed="0.000255">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t129" name="Test Is Flow 43 Deleted" line="326">
<status status="FAIL" start="2026-10-20T23:19:11.364471" elapsed="0.000261">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t130" name="Test Is Flow 45 Deleted" line="328">
<status status="FAIL" start="2026-10-20T23:19:11.364880" elapsed="0.000246">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t131" name="Test Is Flow 101 Deleted" line="330">
<status status="FAIL" start="2026-10-20T23:19:11.365295" elapsed="0.000271">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t132" name="Test Is Flow 102 Deleted" line="332">
<status status="FAIL" start="2026-10-20T23:19:11.365717" elapsed="0.000242">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t133" name="Test Is Flow 103 Deleted" line="334">
<status status="FAIL" start="2026-10-20T23:19:11.366108" elapsed="0.000256">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t134" name="Test Is Flow 104 Deleted" line="336">
<status status="FAIL" start="2026-10-20T23:19:11.366514" elapsed="0.000259">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t135" name="Test Is Flow 105 Deleted" line="338">
<status status="FAIL" start="2026-10-20T23:19:11.366920" elapsed="0.000248">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t136" name="Test Is Flow 106 Deleted" line="340">
<status status="FAIL" start="2026-10-20T23:19:11.367331" elapsed="0.000257">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t137" name="Test Is Flow 107 Deleted" line="342">
<status status="FAIL" start="2026-10-20T23:19:11.367740" elapsed="0.000243">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t138" name="Test Is Flow 108 Deleted" line="344">
<status status="FAIL" start="2026-10-20T23:19:11.368132" elapsed="0.000259">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t139" name="Test Is Flow 109 Deleted" line="346">
<status status="FAIL" start="2026-10-20T23:19:11.368540" elapsed="0.000257">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t140" name="Test Is Flow 110 Deleted" line="348">
<status status="FAIL" start="2026-10-20T23:19:11.368945" elapsed="0.000242">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t141" name="Test Is Flow 113 Deleted" line="350">
<status status="FAIL" start="2026-10-20T23:19:11.369365" elapsed="0.000254">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t142" name="Test Is Flow 201 Deleted" line="352">
<status status="FAIL" start="2026-10-20T23:19:11.369768" elapsed="0.000249">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t143" name="Test Is Flow 202 Deleted" line="354">
<status status="FAIL" start="2026-10-20T23:19:11.370165" elapsed="0.000259">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t144" name="Test Is Flow 203 Deleted" line="356">
<status status="FAIL" start="2026-10-20T23:19:11.370583" elapsed="0.000244">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t145" name="Test Is Flow 204 Deleted" line="358">
<status status="FAIL" start="2026-10-20T23:19:11.370975" elapsed="0.000250">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t146" name="Test Is Flow 205 Deleted" line="360">
<status status="FAIL" start="2026-10-20T23:19:11.371387" elapsed="0.000263">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t147" name="Test Is Flow 206 Deleted" line="362">
<status status="FAIL" start="2026-10-20T23:19:11.371800" elapsed="0.000241">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t148" name="Test Is Flow 209 Deleted" line="364">
<status status="FAIL" start="2026-10-20T23:19:11.372189" elapsed="0.000265">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t149" name="Test Is Flow 214 Deleted" line="366">
<status status="FAIL" start="2026-10-20T23:19:11.372615" elapsed="0.000243">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t150" name="Test Is Flow 218 Deleted" line="368">
<status status="FAIL" start="2026-10-20T23:19:11.373005" elapsed="0.000250">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t151" name="Test Is Flow 219 Deleted" line="370">
<status status="FAIL" start="2026-10-20T23:19:11.373418" elapsed="0.000389">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<test id="s1-s3-s2-t152" name="Test Is Flow 220 Deleted" line="372">
<status status="FAIL" start="2026-10-20T23:19:11.373979" elapsed="0.000244">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</test>
<kw name="Delete All Sessions" owner="RequestsLibrary" type="TEARDOWN">
<msg time="2026-10-20T23:19:11.375080" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects </doc>
<status status="PASS" start="2026-10-20T23:19:11.374961" elapsed="0.000192"/>
</kw>
<doc>Test suite for Stats Manager flows collection</doc>
<status status="FAIL" start="2026-10-20T23:19:02.159407" elapsed="9.215782">Suite setup failed:
Keyword 'FlowLib.Check Switches In Inventory' failed after retrying 10 times. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 Expected status: 404 != 200</status>
</suite>
<kw name="Stop Mininet" owner="Utils" type="TEARDOWN">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:11.377668" 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-10-20T23:19:11.377384" elapsed="0.000333"/>
</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-10-20T23:19:11.377864" elapsed="0.000120"/>
</kw>
<kw name="Read" owner="SSHLibrary">
<doc>Consumes and returns everything available on the server output.</doc>
<status status="PASS" start="2026-10-20T23:19:11.378120" elapsed="0.000133"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-20T23:19:11.382144" 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-10-20T23:19:11.378401" elapsed="0.003795"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-10-20T23:19:11.504988" level="INFO">*** Stopping 1 controllers
c0 
*** Stopping 2 links
..
*** Stopping 1 switches
s1 
*** Stopping 2 hosts
h1 h2 
*** Done
completed in 18.783 seconds
[?2004h[jenkins@releng-34016-79-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-10-20T23:19:11.382353" elapsed="0.122692"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:19:11.505178" elapsed="0.000160"/>
</kw>
<doc>Cleanup/Shutdown work that should be done at the completion of all
tests</doc>
<status status="PASS" start="2026-10-20T23:19:11.377069" elapsed="0.128325"/>
</kw>
<doc>Test suite for the OpenDaylight OpenFlow statistics manager</doc>
<status status="FAIL" start="2026-10-20T23:18:49.971585" elapsed="21.533838"/>
</suite>
<suite id="s1-s4" name="Switch Qualification" source="/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Switch_Qualification">
<suite id="s1-s4-s1" name="010 OpenFlow Connection" source="/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Switch_Qualification/010_OpenFlow_Connection.robot">
<kw name="Switch Qualification Suite Setup" type="SETUP">
<kw name="Get Switch" owner="Ovs">
<msg time="2026-10-20T23:19:11.543935" level="INFO">${test_switch} = &lt;Ovs.Ovs object at 0x756aa4fd7ad0&gt;</msg>
<var>${test_switch}</var>
<arg>${SWITCH_CLASS}</arg>
<doc>Generic method that will allow Robot Code to pass a string
to this "keyword - Get Switch" and create an object of that
type.  (EX: Get Switch  OVS)</doc>
<status status="PASS" start="2026-10-20T23:19:11.543775" elapsed="0.000189"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:11.544484" level="INFO">${test_switch} = &lt;Ovs.Ovs object at 0x756aa4fd7ad0&gt;</msg>
<arg>${test_switch}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-20T23:19:11.544158" elapsed="0.000368"/>
</kw>
<kw name="Call Method" owner="BuiltIn">
<arg>${test_switch}</arg>
<arg>set_mgmt_ip</arg>
<arg>${SWITCH_IP}</arg>
<doc>Calls the named method of the given object with the provided arguments.</doc>
<status status="PASS" start="2026-10-20T23:19:11.544687" elapsed="0.000267"/>
</kw>
<kw name="Call Method" owner="BuiltIn">
<arg>${test_switch}</arg>
<arg>set_controller_ip</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<doc>Calls the named method of the given object with the provided arguments.</doc>
<status status="PASS" start="2026-10-20T23:19:11.545105" elapsed="0.000276"/>
</kw>
<kw name="Call Method" owner="BuiltIn">
<arg>${test_switch}</arg>
<arg>set_mgmt_prompt</arg>
<arg>${SWITCH_PROMPT}</arg>
<doc>Calls the named method of the given object with the provided arguments.</doc>
<status status="PASS" start="2026-10-20T23:19:11.545531" elapsed="0.000284"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:11.546733" level="INFO">MAKE: OpenVswitch
MODEL: OVS
IP: 10.30.170.219
PROMPT: &gt;
CONTROLLER_IP: 10.30.170.223
MGMT_PROTOCOL: ssh</msg>
<arg>MAKE: ${test_switch.make}\nMODEL: ${test_switch.model}\nIP: ${test_switch.mgmt_ip}\nPROMPT: ${test_switch.mgmt_prompt}\nCONTROLLER_IP: ${test_switch.of_controller_ip}\nMGMT_PROTOCOL: ${test_switch.mgmt_protocol}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:11.546008" elapsed="0.000770"/>
</kw>
<kw name="Ping" owner="SwitchUtils">
<kw name="Run" owner="OperatingSystem">
<msg time="2026-10-20T23:19:11.547328" level="INFO">Running command 'ping 10.30.170.219 -c 1 -W 1'.</msg>
<msg time="2026-10-20T23:19:11.551797" level="INFO">${output} = PING 10.30.170.219 (10.30.170.219) 56(84) bytes of data.
64 bytes from 10.30.170.219: icmp_seq=1 ttl=64 time=0.737 ms

--- 10.30.170.219 ping statistics ---
1 packets transmitted, 1 received, 0% packe...</msg>
<var>${output}</var>
<arg>ping ${ip} -c 1 -W 1</arg>
<doc>*This keyword is considered deprecated. Use the [Process] library instead.*</doc>
<status status="PASS" start="2026-10-20T23:19:11.547204" elapsed="0.004622"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>1 packets transmitted, 1 received</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="PASS" start="2026-10-20T23:19:11.551989" elapsed="0.000471"/>
</kw>
<arg>${test_switch.mgmt_ip}</arg>
<status status="PASS" start="2026-10-20T23:19:11.546916" elapsed="0.005604"/>
</kw>
<kw name="Initialize Switch" owner="SwitchUtils">
<kw name="Connect To Switch" owner="SwitchUtils">
<kw name="Open Connection Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Call Method" owner="BuiltIn">
<arg>${switch}</arg>
<arg>set_ssh_key</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<doc>Calls the named method of the given object with the provided arguments.</doc>
<status status="PASS" start="2026-10-20T23:19:11.553957" elapsed="0.000282"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:11.553717" elapsed="0.000562"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:11.553692" elapsed="0.000633"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Call Method" owner="BuiltIn">
<arg>${switch}</arg>
<arg>set_mgmt_user</arg>
<arg>${TOOLS_SYSTEM_USER}</arg>
<doc>Calls the named method of the given object with the provided arguments.</doc>
<status status="PASS" start="2026-10-20T23:19:11.554642" elapsed="0.000259"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:11.554382" elapsed="0.000598"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:11.554366" elapsed="0.000641"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:19:11.555767" level="INFO">${connection_index} = 16</msg>
<var>${connection_index}</var>
<arg>${switch.mgmt_ip}</arg>
<arg>prompt=${switch.mgmt_prompt}</arg>
<arg>timeout=30s</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-20T23:19:11.555339" elapsed="0.000453"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:11.555060" elapsed="0.000772"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${connection_index}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:11.556002" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:11.555856" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:11.555044" elapsed="0.001030"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:19:11.556662" level="INFO">Logging into '10.30.170.219:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:19:11.881089" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Tue Oct 20 23:18:50 UTC 2026

  System load:  0.0                Processes:             110
  Usage of /:   19.8% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.219
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

5 updates can be applied immediately.
To see these additional updates run: apt list --upgradable

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


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


Last login: Tue Oct 20 23:18:52 2026 from 10.30.170.114
[?2004h[jenkins@releng-34016-79-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${switch.mgmt_user}</arg>
<arg>${switch.ssh_key}</arg>
<arg>any</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-10-20T23:19:11.556402" elapsed="0.324802"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:11.556126" elapsed="0.325136"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:11.556111" elapsed="0.325186"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Open Connection" owner="Telnet">
<var>${connection_index}</var>
<arg>${switch.mgmt_ip}</arg>
<doc>Opens a new Telnet connection to the given host and port.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:11.881760" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:11.881394" elapsed="0.000424"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:11.882370" level="INFO">${connection_index} = 16</msg>
<var>${connection_index}</var>
<arg>${connection_index}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:11.882003" elapsed="0.000392"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:11.881841" elapsed="0.000588"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:11.881367" elapsed="0.001083"/>
</if>
<return>
<value>${connection_index}</value>
<status status="PASS" start="2026-10-20T23:19:11.882491" elapsed="0.000041"/>
</return>
<msg time="2026-10-20T23:19:11.882658" level="INFO">${connection_index} = 16</msg>
<var>${connection_index}</var>
<arg>${switch}</arg>
<doc>Some switches require telnet access and others require ssh access.  Based on the
switch.mgmt_protocol, the connection open will be handled by the right robot
library (Telnet or SSHLibrary).  The connection_index is returned.</doc>
<status status="PASS" start="2026-10-20T23:19:11.553527" elapsed="0.329155"/>
</kw>
<kw name="Call Method" owner="BuiltIn">
<arg>${switch}</arg>
<arg>set_connection_index</arg>
<arg>${connection_index}</arg>
<doc>Calls the named method of the given object with the provided arguments.</doc>
<status status="PASS" start="2026-10-20T23:19:11.882832" elapsed="0.000268"/>
</kw>
<kw name="Configure Connection Index And Prompt Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${switch.connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-10-20T23:19:11.883824" elapsed="0.000167"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:11.883596" elapsed="0.000429"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:11.883577" elapsed="0.000471"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Set Client Configuration" owner="SSHLibrary">
<arg>prompt=${switch.mgmt_prompt}</arg>
<arg>timeout=5s</arg>
<doc>Update the `configuration` of the current connection.</doc>
<status status="PASS" start="2026-10-20T23:19:11.884331" elapsed="0.000279"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:11.884098" elapsed="0.000548"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:11.884083" elapsed="0.000587"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Switch Connection" owner="Telnet">
<arg>${switch.connection_index}</arg>
<doc>Switches between active connections using an index or an alias.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:11.884956" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:11.884720" elapsed="0.000285"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:11.884705" elapsed="0.000323"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Set Prompt" owner="Telnet">
<arg>${switch.mgmt_prompt}</arg>
<arg>True</arg>
<doc>Sets the prompt used by the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:11.885286" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:11.885076" elapsed="0.000276"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:11.885062" elapsed="0.000311"/>
</if>
<arg>${switch}</arg>
<doc>when using multiple switch connections (e.g. more than one switch device) this keyword will switch the current connection index and prompt so that the following
Read or Write actions happen on the correct device.</doc>
<status status="PASS" start="2026-10-20T23:19:11.883410" elapsed="0.002006"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Write Bare Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Write Bare" owner="SSHLibrary">
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-10-20T23:19:11.886214" elapsed="0.000190"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:11.886007" elapsed="0.000433"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:11.885991" elapsed="0.000472"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Write Bare" owner="Telnet">
<arg>${cmd}</arg>
<doc>Writes the given text, and nothing else, into the connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:11.886739" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:11.886520" elapsed="0.000316"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:11.886497" elapsed="0.000364"/>
</if>
<arg>${switch}</arg>
<arg>${cmd}</arg>
<doc>Wraps the Write Bare command so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:11.885825" elapsed="0.001080"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-10-20T23:19:12.887524" level="INFO">Slept 1 second.</msg>
<arg>1</arg>
<doc>Pauses execution for the given time.</doc>
<status status="PASS" start="2026-10-20T23:19:11.887046" elapsed="1.000713"/>
</kw>
<kw name="Read Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Read" owner="SSHLibrary">
<msg time="2026-10-20T23:19:12.889833" level="INFO">pwd</msg>
<doc>Consumes and returns everything available on the server output.</doc>
<status status="PASS" start="2026-10-20T23:19:12.889548" elapsed="0.000382"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:12.888912" elapsed="0.001086"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:12.888864" elapsed="0.001192"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Read" owner="Telnet">
<doc>Reads everything that is currently available in the output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:12.890701" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:12.890167" elapsed="0.000643"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:12.890135" elapsed="0.000724"/>
</if>
<arg>${switch}</arg>
<doc>Wraps the Read command so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:12.888421" elapsed="0.002536"/>
</kw>
<var name="${cmd}">pwd</var>
<status status="PASS" start="2026-10-20T23:19:11.885649" elapsed="1.005375"/>
</iter>
<var>${cmd}</var>
<value>@{switch.connection_configs}</value>
<status status="PASS" start="2026-10-20T23:19:11.885468" elapsed="1.005624"/>
</for>
<arg>${switch}</arg>
<doc>Will Open a connection to the switch, which will set the switch.connection_index.
For each switch.connection_configs string, a write bare will be executed on the
switch connection.  The write bare is done becuase some switch consoles require
extra input (CR/LF, etc.) that are needed.  The connection_configs strings should
be sufficient to put the switch console in to a usuable state so that further
interactions with the switch can be used with the robot keyword "Execute
Command"</doc>
<status status="PASS" start="2026-10-20T23:19:11.553075" elapsed="1.338131"/>
</kw>
<kw name="Configure Connection Index And Prompt Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${switch.connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-10-20T23:19:12.892753" elapsed="0.000347"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:12.892206" elapsed="0.000969"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:12.892170" elapsed="0.001054"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Set Client Configuration" owner="SSHLibrary">
<arg>prompt=${switch.mgmt_prompt}</arg>
<arg>timeout=5s</arg>
<doc>Update the `configuration` of the current connection.</doc>
<status status="PASS" start="2026-10-20T23:19:12.893877" elapsed="0.000604"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:12.893366" elapsed="0.001195"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:12.893301" elapsed="0.001330"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Switch Connection" owner="Telnet">
<arg>${switch.connection_index}</arg>
<doc>Switches between active connections using an index or an alias.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:12.895348" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:12.894821" elapsed="0.000647"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:12.894710" elapsed="0.000805"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Set Prompt" owner="Telnet">
<arg>${switch.mgmt_prompt}</arg>
<arg>True</arg>
<doc>Sets the prompt used by the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:12.896117" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:12.895649" elapsed="0.000582"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:12.895615" elapsed="0.000664"/>
</if>
<arg>${switch}</arg>
<doc>when using multiple switch connections (e.g. more than one switch device) this keyword will switch the current connection index and prompt so that the following
Read or Write actions happen on the correct device.</doc>
<status status="PASS" start="2026-10-20T23:19:12.891856" elapsed="0.004551"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Write Bare Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Write Bare" owner="SSHLibrary">
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-10-20T23:19:12.898186" elapsed="0.000523"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:12.897728" elapsed="0.001057"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:12.897692" elapsed="0.001181"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Write Bare" owner="Telnet">
<arg>${cmd}</arg>
<doc>Writes the given text, and nothing else, into the connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:12.899490" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:12.898984" elapsed="0.000650"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:12.898952" elapsed="0.000732"/>
</if>
<arg>${switch}</arg>
<arg>${cmd}</arg>
<doc>Wraps the Write Bare command so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:12.897276" elapsed="0.002502"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-10-20T23:19:13.901004" level="INFO">Slept 1 second.</msg>
<arg>1</arg>
<doc>Pauses execution for the given time.</doc>
<status status="PASS" start="2026-10-20T23:19:12.900161" elapsed="1.001054"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Read" owner="SSHLibrary">
<msg time="2026-10-20T23:19:13.904593" level="INFO">['/sbin/ifconfig -a | egrep \'^s\' | awk \'{print "sudo ovs-vsctl del-br",$1}\' | sh']</msg>
<doc>Consumes and returns everything available on the server output.</doc>
<status status="PASS" start="2026-10-20T23:19:13.904345" elapsed="0.000376"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:13.903756" elapsed="0.001032"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:13.903711" elapsed="0.001132"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Read" owner="Telnet">
<doc>Reads everything that is currently available in the output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:13.905459" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:13.904957" elapsed="0.000611"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:13.904924" elapsed="0.000717"/>
</if>
<arg>${switch}</arg>
<doc>Wraps the Read command so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:13.903297" elapsed="0.002449"/>
</kw>
<arg>Read Wrapper</arg>
<arg>${switch}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-20T23:19:13.901774" elapsed="0.004181"/>
</kw>
<var name="${cmd}">['/sbin/ifconfig -a | egrep \'^s\' | awk \'{print "sudo ovs-vsctl del-br",$1}\' | sh']</var>
<status status="PASS" start="2026-10-20T23:19:12.896896" elapsed="1.009132"/>
</iter>
<var>${cmd}</var>
<value>@{switch.initialization_cmds}</value>
<status status="PASS" start="2026-10-20T23:19:12.896509" elapsed="1.009586"/>
</for>
<if>
<branch type="IF" condition="&quot;${switch.initialization_type}&quot; == &quot;reboot&quot;">
<kw name="Wait For Switch Reboot" owner="SwitchUtils">
<arg>${switch}</arg>
<doc>If a switch has been set to reboot, it may take some time.  This keyword will first
make sure the switch has gone down (10 pings over 10 seconds should not see
a 100% success, although it may respond for a short time after the reload is
issued).  Then a poll is done with a single ping request every 5s until a success
is found, at which point it is assumed the switch is up and ready.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:13.906849" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:13.906228" elapsed="0.000747"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:13.906192" elapsed="0.000834"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.initialization_type}&quot; == &quot;reboot&quot;">
<kw name="Connect To Switch" owner="SwitchUtils">
<arg>${switch}</arg>
<doc>Will Open a connection to the switch, which will set the switch.connection_index.
For each switch.connection_configs string, a write bare will be executed on the
switch connection.  The write bare is done becuase some switch consoles require
extra input (CR/LF, etc.) that are needed.  The connection_configs strings should
be sufficient to put the switch console in to a usuable state so that further
interactions with the switch can be used with the robot keyword "Execute
Command"</doc>
<status status="NOT RUN" start="2026-10-20T23:19:13.907826" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:13.907139" elapsed="0.000812"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:13.907107" elapsed="0.000895"/>
</if>
<arg>${test_switch}</arg>
<doc>Will connect and execute all switch.initialization_cmds on the given switch.
In some cases, this may be a reboot.  If so, the switch.initialization_type can
be set to "reboot" and further logic is invoked to wait for the reboot to complete
and a reconnect to the switch is made.</doc>
<status status="PASS" start="2026-10-20T23:19:11.552789" elapsed="2.355312"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:19:13.909079" level="INFO">Creating Session using : alias=session, url=http://10.30.170.223:8181, headers={'Content-Type': 'application/xml'},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x756aa4ffdd50&gt;, timeout=None, proxies=None, verify=False,                     debug=0 </msg>
<arg>session</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>headers=${HEADERS_XML}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-10-20T23:19:13.908508" elapsed="0.000937"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:11.543423" elapsed="2.366160"/>
</kw>
<test id="s1-s4-s1-t1" name="OF1.3 Connection Between Switch and Controller" line="28">
<kw name="Configure OpenFlow" owner="SwitchUtils">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:13.912891" level="INFO">Applying configs to configure openflow on the given switch.</msg>
<arg>Applying configs to configure openflow on the given switch.</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:13.911606" elapsed="0.001418"/>
</kw>
<kw name="Configure Connection Index And Prompt Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${switch.connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-10-20T23:19:13.914785" elapsed="0.000464"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:13.914214" elapsed="0.001142"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:13.914162" elapsed="0.001251"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Set Client Configuration" owner="SSHLibrary">
<arg>prompt=${switch.mgmt_prompt}</arg>
<arg>timeout=5s</arg>
<doc>Update the `configuration` of the current connection.</doc>
<status status="PASS" start="2026-10-20T23:19:13.916042" elapsed="0.000721"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:13.915525" elapsed="0.001319"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:13.915493" elapsed="0.001403"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Switch Connection" owner="Telnet">
<arg>${switch.connection_index}</arg>
<doc>Switches between active connections using an index or an alias.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:13.917538" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:13.917008" elapsed="0.000664"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:13.916975" elapsed="0.000748"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Set Prompt" owner="Telnet">
<arg>${switch.mgmt_prompt}</arg>
<arg>True</arg>
<doc>Sets the prompt used by the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:13.918303" elapsed="0.000073"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:13.917831" elapsed="0.000617"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:13.917799" elapsed="0.000710"/>
</if>
<arg>${switch}</arg>
<doc>when using multiple switch connections (e.g. more than one switch device) this keyword will switch the current connection index and prompt so that the following
Read or Write actions happen on the correct device.</doc>
<status status="PASS" start="2026-10-20T23:19:13.913649" elapsed="0.004958"/>
</kw>
<kw name="Iterate Switch Commands From List" owner="SwitchUtils">
<kw name="Configure Connection Index And Prompt Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${switch.connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-10-20T23:19:13.923351" elapsed="0.000486"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:13.922818" elapsed="0.001093"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:13.922780" elapsed="0.001184"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Set Client Configuration" owner="SSHLibrary">
<arg>prompt=${switch.mgmt_prompt}</arg>
<arg>timeout=5s</arg>
<doc>Update the `configuration` of the current connection.</doc>
<status status="PASS" start="2026-10-20T23:19:13.924599" elapsed="0.000669"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:13.924075" elapsed="0.001306"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:13.924042" elapsed="0.001393"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Switch Connection" owner="Telnet">
<arg>${switch.connection_index}</arg>
<doc>Switches between active connections using an index or an alias.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:13.926057" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:13.925547" elapsed="0.000621"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:13.925514" elapsed="0.000716"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Set Prompt" owner="Telnet">
<arg>${switch.mgmt_prompt}</arg>
<arg>True</arg>
<doc>Sets the prompt used by the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:13.926937" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:13.926371" elapsed="0.000685"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:13.926336" elapsed="0.000770"/>
</if>
<arg>${switch}</arg>
<doc>when using multiple switch connections (e.g. more than one switch device) this keyword will switch the current connection index and prompt so that the following
Read or Write actions happen on the correct device.</doc>
<status status="PASS" start="2026-10-20T23:19:13.922288" elapsed="0.004916"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:13.928657" level="INFO">sudo ovs-vsctl add-br s1</msg>
<arg>${cmd}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:13.927999" elapsed="0.000780"/>
</kw>
<kw name="Read Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Read" owner="SSHLibrary">
<doc>Consumes and returns everything available on the server output.</doc>
<status status="PASS" start="2026-10-20T23:19:13.930547" elapsed="0.000364"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:13.930017" elapsed="0.000962"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:13.929974" elapsed="0.001056"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Read" owner="Telnet">
<doc>Reads everything that is currently available in the output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:13.931658" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:13.931141" elapsed="0.000623"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:13.931108" elapsed="0.000704"/>
</if>
<arg>${switch}</arg>
<doc>Wraps the Read command so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:13.929201" elapsed="0.002708"/>
</kw>
<kw name="Execute Command Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:19:13.933985" level="INFO">Executing command 'sudo ovs-vsctl add-br s1'.</msg>
<msg time="2026-10-20T23:19:13.998045" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:19:13.998292" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:19:13.933594" elapsed="0.064788"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:13.932983" elapsed="0.065477"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${output}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:13.998865" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:13.998513" elapsed="0.000467"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:13.932948" elapsed="0.066075"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Execute Command" owner="Telnet">
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes the given `command` and reads, logs, and returns resulting output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:13.999672" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:13.999134" elapsed="0.000656"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:14.000912" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>${output}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:14.000133" elapsed="0.000833"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:13.999838" elapsed="0.001200"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:13.999102" elapsed="0.001979"/>
</if>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-20T23:19:14.001157" elapsed="0.000063"/>
</return>
<arg>${switch}</arg>
<arg>${cmd}</arg>
<doc>Wraps the Execute Command keyword so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:13.932444" elapsed="0.068977"/>
</kw>
<var name="${cmd}">sudo ovs-vsctl add-br s1</var>
<status status="PASS" start="2026-10-20T23:19:13.927599" elapsed="0.073898"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:14.002708" level="INFO">sudo ovs-vsctl set bridge s1 protocols=OpenFlow13</msg>
<arg>${cmd}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:14.002080" elapsed="0.000742"/>
</kw>
<kw name="Read Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Read" owner="SSHLibrary">
<doc>Consumes and returns everything available on the server output.</doc>
<status status="PASS" start="2026-10-20T23:19:14.004235" elapsed="0.000359"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:14.003750" elapsed="0.000934"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:14.003714" elapsed="0.001023"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Read" owner="Telnet">
<doc>Reads everything that is currently available in the output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:14.005301" elapsed="0.000074"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:14.004845" elapsed="0.000591"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:14.004813" elapsed="0.000671"/>
</if>
<arg>${switch}</arg>
<doc>Wraps the Read command so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:14.003236" elapsed="0.002342"/>
</kw>
<kw name="Execute Command Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:19:14.007589" level="INFO">Executing command 'sudo ovs-vsctl set bridge s1 protocols=OpenFlow13'.</msg>
<msg time="2026-10-20T23:19:14.055011" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:19:14.055277" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:19:14.007230" elapsed="0.048135"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:14.006680" elapsed="0.048769"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${output}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:14.055874" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:14.055506" elapsed="0.000484"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:14.006642" elapsed="0.049391"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Execute Command" owner="Telnet">
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes the given `command` and reads, logs, and returns resulting output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:14.056702" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:14.056148" elapsed="0.000672"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:14.057994" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>${output}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:14.057198" elapsed="0.000930"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:14.056871" elapsed="0.001335"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:14.056115" elapsed="0.002137"/>
</if>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-20T23:19:14.058365" elapsed="0.000066"/>
</return>
<arg>${switch}</arg>
<arg>${cmd}</arg>
<doc>Wraps the Execute Command keyword so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:14.006100" elapsed="0.052507"/>
</kw>
<var name="${cmd}">sudo ovs-vsctl set bridge s1 protocols=OpenFlow13</var>
<status status="PASS" start="2026-10-20T23:19:14.001705" elapsed="0.057001"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:14.059915" level="INFO">sudo ovs-vsctl set-controller s1 tcp:10.30.170.223</msg>
<arg>${cmd}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:14.059280" elapsed="0.000751"/>
</kw>
<kw name="Read Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Read" owner="SSHLibrary">
<doc>Consumes and returns everything available on the server output.</doc>
<status status="PASS" start="2026-10-20T23:19:14.061512" elapsed="0.000354"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:14.060993" elapsed="0.000943"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:14.060956" elapsed="0.001032"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Read" owner="Telnet">
<doc>Reads everything that is currently available in the output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:14.062595" elapsed="0.000067"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:14.062098" elapsed="0.000627"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:14.062065" elapsed="0.000709"/>
</if>
<arg>${switch}</arg>
<doc>Wraps the Read command so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:14.060493" elapsed="0.002377"/>
</kw>
<kw name="Execute Command Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:19:14.065237" level="INFO">Executing command 'sudo ovs-vsctl set-controller s1 tcp:10.30.170.223'.</msg>
<msg time="2026-10-20T23:19:14.114749" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:19:14.114994" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:19:14.064594" elapsed="0.050450"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:14.063945" elapsed="0.051175"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${output}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:14.115526" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:14.115174" elapsed="0.000489"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:14.063909" elapsed="0.051800"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Execute Command" owner="Telnet">
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes the given `command` and reads, logs, and returns resulting output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:14.116301" elapsed="0.000076"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:14.115820" elapsed="0.000630"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:14.117540" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>${output}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:14.116820" elapsed="0.000773"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:14.116499" elapsed="0.001189"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:14.115788" elapsed="0.001944"/>
</if>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-20T23:19:14.117802" elapsed="0.000056"/>
</return>
<arg>${switch}</arg>
<arg>${cmd}</arg>
<doc>Wraps the Execute Command keyword so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:14.063401" elapsed="0.054620"/>
</kw>
<var name="${cmd}">sudo ovs-vsctl set-controller s1 tcp:10.30.170.223</var>
<status status="PASS" start="2026-10-20T23:19:14.058899" elapsed="0.059196"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:14.119304" level="INFO">sudo ifconfig s1 up</msg>
<arg>${cmd}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:14.118732" elapsed="0.000716"/>
</kw>
<kw name="Read Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Read" owner="SSHLibrary">
<doc>Consumes and returns everything available on the server output.</doc>
<status status="PASS" start="2026-10-20T23:19:14.120909" elapsed="0.000341"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:14.120398" elapsed="0.000958"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:14.120360" elapsed="0.001052"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Read" owner="Telnet">
<doc>Reads everything that is currently available in the output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:14.122005" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:14.121523" elapsed="0.000585"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:14.121490" elapsed="0.000666"/>
</if>
<arg>${switch}</arg>
<doc>Wraps the Read command so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:14.119893" elapsed="0.002356"/>
</kw>
<kw name="Execute Command Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:19:14.124256" level="INFO">Executing command 'sudo ifconfig s1 up'.</msg>
<msg time="2026-10-20T23:19:14.174694" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:19:14.174930" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:19:14.123950" elapsed="0.051030"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:14.123360" elapsed="0.051695"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${output}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:14.175464" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:14.175109" elapsed="0.000470"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:14.123282" elapsed="0.052340"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Execute Command" owner="Telnet">
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes the given `command` and reads, logs, and returns resulting output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:14.176241" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:14.175758" elapsed="0.000634"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:14.177568" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>${output}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:14.176844" elapsed="0.000800"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:14.176510" elapsed="0.001209"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:14.175725" elapsed="0.002038"/>
</if>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-20T23:19:14.177836" elapsed="0.000057"/>
</return>
<arg>${switch}</arg>
<arg>${cmd}</arg>
<doc>Wraps the Execute Command keyword so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:14.122801" elapsed="0.055256"/>
</kw>
<var name="${cmd}">sudo ifconfig s1 up</var>
<status status="PASS" start="2026-10-20T23:19:14.118277" elapsed="0.059855"/>
</iter>
<var>${cmd}</var>
<value>@{cmd_list}</value>
<status status="PASS" start="2026-10-20T23:19:13.927300" elapsed="0.250892"/>
</for>
<arg>${switch}</arg>
<arg>${switch.base_openflow_config}</arg>
<doc>Each string in the @{cmd_list} argument is executed on the switch.connection_index.</doc>
<status status="PASS" start="2026-10-20T23:19:13.921192" elapsed="0.257107"/>
</kw>
<kw name="Read Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Read" owner="SSHLibrary">
<doc>Consumes and returns everything available on the server output.</doc>
<status status="PASS" start="2026-10-20T23:19:14.179785" elapsed="0.000326"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:14.179246" elapsed="0.000932"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:14.179210" elapsed="0.001018"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Read" owner="Telnet">
<doc>Reads everything that is currently available in the output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:14.180860" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:14.180369" elapsed="0.000597"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:14.180305" elapsed="0.000709"/>
</if>
<arg>${switch}</arg>
<doc>Wraps the Read command so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:14.178779" elapsed="0.002329"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Validate Switch Output" owner="SwitchUtils">
<kw name="Configure Connection Index And Prompt Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${switch.connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-10-20T23:19:14.189911" elapsed="0.000470"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:14.189386" elapsed="0.001073"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:14.189346" elapsed="0.001164"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Set Client Configuration" owner="SSHLibrary">
<arg>prompt=${switch.mgmt_prompt}</arg>
<arg>timeout=5s</arg>
<doc>Update the `configuration` of the current connection.</doc>
<status status="PASS" start="2026-10-20T23:19:14.191137" elapsed="0.000698"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:14.190622" elapsed="0.001294"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:14.190589" elapsed="0.001378"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Switch Connection" owner="Telnet">
<arg>${switch.connection_index}</arg>
<doc>Switches between active connections using an index or an alias.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:14.192595" elapsed="0.000068"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:14.192077" elapsed="0.000656"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:14.192044" elapsed="0.000738"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Set Prompt" owner="Telnet">
<arg>${switch.mgmt_prompt}</arg>
<arg>True</arg>
<doc>Sets the prompt used by the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:14.193384" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:14.192888" elapsed="0.000613"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:14.192857" elapsed="0.000692"/>
</if>
<arg>${switch}</arg>
<doc>when using multiple switch connections (e.g. more than one switch device) this keyword will switch the current connection index and prompt so that the following
Read or Write actions happen on the correct device.</doc>
<status status="PASS" start="2026-10-20T23:19:14.188894" elapsed="0.004770"/>
</kw>
<kw name="Read Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Read" owner="SSHLibrary">
<doc>Consumes and returns everything available on the server output.</doc>
<status status="PASS" start="2026-10-20T23:19:14.195427" elapsed="0.000348"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:14.194914" elapsed="0.000929"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:14.194877" elapsed="0.001016"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Read" owner="Telnet">
<doc>Reads everything that is currently available in the output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:14.196495" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:14.196006" elapsed="0.000596"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:14.195971" elapsed="0.000803"/>
</if>
<arg>${switch}</arg>
<doc>Wraps the Read command so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:14.194077" elapsed="0.002796"/>
</kw>
<kw name="Execute Command Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:19:14.198983" level="INFO">Executing command '/sbin/ifconfig'.</msg>
<msg time="2026-10-20T23:19:14.220677" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:19:14.220919" level="INFO">${output} = ens3: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1458
        inet 10.30.170.219  netmask 255.255.254.0  broadcast 10.30.171.255
        inet6 fe80::f816:3eff:feeb:7ce2  prefixlen 64  scopeid 0x2...</msg>
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:19:14.198595" elapsed="0.022380"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:14.197996" elapsed="0.023054"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${output}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:14.221465" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:14.221102" elapsed="0.000482"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:14.197959" elapsed="0.023721"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Execute Command" owner="Telnet">
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes the given `command` and reads, logs, and returns resulting output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:14.222592" elapsed="0.000078"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:14.221850" elapsed="0.000900"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:14.224024" level="INFO">${output} = ens3: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1458
        inet 10.30.170.219  netmask 255.255.254.0  broadcast 10.30.171.255
        inet6 fe80::f816:3eff:feeb:7ce2  prefixlen 64  scopeid 0x2...</msg>
<var>${output}</var>
<arg>${output}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:14.223202" elapsed="0.000883"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:14.222879" elapsed="0.001279"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:14.221802" elapsed="0.002401"/>
</if>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-20T23:19:14.224279" elapsed="0.000115"/>
</return>
<msg time="2026-10-20T23:19:14.224623" level="INFO">${tmp} = ens3: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1458
        inet 10.30.170.219  netmask 255.255.254.0  broadcast 10.30.171.255
        inet6 fe80::f816:3eff:feeb:7ce2  prefixlen 64  scopeid 0x2...</msg>
<var>${tmp}</var>
<arg>${switch}</arg>
<arg>/sbin/ifconfig</arg>
<doc>Wraps the Execute Command keyword so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:14.197409" elapsed="0.027293"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:14.225753" level="INFO">ens3: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1458
        inet 10.30.170.219  netmask 255.255.254.0  broadcast 10.30.171.255
        inet6 fe80::f816:3eff:feeb:7ce2  prefixlen 64  scopeid 0x20&lt;link&gt;
        ether fa:16:3e:eb:7c:e2  txqueuelen 1000  (Ethernet)
        RX packets 12595  bytes 21131495 (21.1 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 8639  bytes 4021290 (4.0 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73&lt;UP,LOOPBACK,RUNNING&gt;  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10&lt;host&gt;
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 310  bytes 27934 (27.9 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 310  bytes 27934 (27.9 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

s1: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1500
        inet6 fe80::e007:e3ff:fe56:6d42  prefixlen 64  scopeid 0x20&lt;link&gt;
        ether e2:07:e3:56:6d:42  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2  bytes 176 (176.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0</msg>
<arg>${tmp}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:14.225117" elapsed="0.000777"/>
</kw>
<kw name="Execute Command Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:19:14.227954" level="INFO">Executing command 'sudo ovs-vsctl show'.</msg>
<msg time="2026-10-20T23:19:14.278799" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:19:14.279038" level="INFO">${output} = ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_versio...</msg>
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:19:14.227606" elapsed="0.051484"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:14.226995" elapsed="0.052171"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${output}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:14.279581" elapsed="0.000070"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:14.279219" elapsed="0.000504"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:14.226959" elapsed="0.052807"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Execute Command" owner="Telnet">
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes the given `command` and reads, logs, and returns resulting output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:14.280424" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:14.279878" elapsed="0.000664"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:14.281648" level="INFO">${output} = ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_versio...</msg>
<var>${output}</var>
<arg>${output}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:14.280913" elapsed="0.000794"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:14.280590" elapsed="0.001188"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:14.279846" elapsed="0.001974"/>
</if>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-20T23:19:14.281892" elapsed="0.000056"/>
</return>
<msg time="2026-10-20T23:19:14.282166" level="INFO">${output} = ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_versio...</msg>
<var>${output}</var>
<arg>${switch}</arg>
<arg>${cmd}</arg>
<doc>Wraps the Execute Command keyword so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:14.226444" elapsed="0.055776"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:14.283261" level="INFO">ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        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-10-20T23:19:14.282692" elapsed="0.000715"/>
</kw>
<for flavor="IN">
<iter>
<if>
<branch type="IF" condition="&quot;${should_exist}&quot; == &quot;true&quot;">
<kw name="Should Match Regexp" owner="BuiltIn">
<msg time="2026-10-20T23:19:14.285581" level="FAIL">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</msg>
<arg>${output}</arg>
<arg>${str}</arg>
<doc>Fails if the `string` does not match the regular expression `pattern`.</doc>
<status status="FAIL" start="2026-10-20T23:19:14.284536" elapsed="0.001236">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</status>
</kw>
<status status="FAIL" start="2026-10-20T23:19:14.284017" elapsed="0.001906">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</status>
</branch>
<status status="FAIL" start="2026-10-20T23:19:14.283964" elapsed="0.002041">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</status>
</if>
<if>
<branch type="IF" condition="&quot;${should_exist}&quot; == &quot;false&quot;">
<kw name="Should Not Match Regexp" owner="BuiltIn">
<arg>${output}</arg>
<arg>${str}</arg>
<doc>Fails if the `string` matches the regular expression `pattern`.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:14.286562" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:14.286216" elapsed="0.000483"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:19:14.286178" elapsed="0.000572"/>
</if>
<var name="${str}">is_connected: true</var>
<status status="FAIL" start="2026-10-20T23:19:14.283903" elapsed="0.002941">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</status>
</iter>
<var>${str}</var>
<value>@{validations}</value>
<status status="FAIL" start="2026-10-20T23:19:14.283512" elapsed="0.003456">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</status>
</for>
<arg>${switch}</arg>
<arg>${switch.openflow_validation_cmd}</arg>
<arg>${switch.openflow_enable_validations}</arg>
<doc>A generic keyword that will execute one command on the switch, and check for each string in the @{validations} argument.  There is a boolean flag ${should_exist} that can be used to check that the validations are or are NOT in the output of the command executed.</doc>
<status status="FAIL" start="2026-10-20T23:19:14.187584" elapsed="0.099596">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</status>
</kw>
<kw name="Validate Switch Output" owner="SwitchUtils">
<kw name="Configure Connection Index And Prompt Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${switch.connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-10-20T23:19:15.295922" elapsed="0.000517"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:15.295365" elapsed="0.001164"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:15.295293" elapsed="0.001292"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Set Client Configuration" owner="SSHLibrary">
<arg>prompt=${switch.mgmt_prompt}</arg>
<arg>timeout=5s</arg>
<doc>Update the `configuration` of the current connection.</doc>
<status status="PASS" start="2026-10-20T23:19:15.297243" elapsed="0.000737"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:15.296722" elapsed="0.001341"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:15.296687" elapsed="0.001429"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Switch Connection" owner="Telnet">
<arg>${switch.connection_index}</arg>
<doc>Switches between active connections using an index or an alias.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:15.298794" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:15.298230" elapsed="0.000679"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:15.298196" elapsed="0.000762"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Set Prompt" owner="Telnet">
<arg>${switch.mgmt_prompt}</arg>
<arg>True</arg>
<doc>Sets the prompt used by the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:15.299568" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:15.299066" elapsed="0.000643"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:15.299035" elapsed="0.000723"/>
</if>
<arg>${switch}</arg>
<doc>when using multiple switch connections (e.g. more than one switch device) this keyword will switch the current connection index and prompt so that the following
Read or Write actions happen on the correct device.</doc>
<status status="PASS" start="2026-10-20T23:19:15.294850" elapsed="0.005006"/>
</kw>
<kw name="Read Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Read" owner="SSHLibrary">
<doc>Consumes and returns everything available on the server output.</doc>
<status status="PASS" start="2026-10-20T23:19:15.301294" elapsed="0.000396"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:15.300799" elapsed="0.000962"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:15.300763" elapsed="0.001049"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Read" owner="Telnet">
<doc>Reads everything that is currently available in the output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:15.302411" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:15.301923" elapsed="0.000595"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:15.301888" elapsed="0.000678"/>
</if>
<arg>${switch}</arg>
<doc>Wraps the Read command so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:15.300278" elapsed="0.002404"/>
</kw>
<kw name="Execute Command Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:19:15.304701" level="INFO">Executing command '/sbin/ifconfig'.</msg>
<msg time="2026-10-20T23:19:15.317820" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:19:15.318060" level="INFO">${output} = ens3: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1458
        inet 10.30.170.219  netmask 255.255.254.0  broadcast 10.30.171.255
        inet6 fe80::f816:3eff:feeb:7ce2  prefixlen 64  scopeid 0x2...</msg>
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:19:15.304349" elapsed="0.013769"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:15.303757" elapsed="0.014437"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${output}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:15.318617" elapsed="0.000070"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:15.318248" elapsed="0.000514"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:15.303720" elapsed="0.015086"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Execute Command" owner="Telnet">
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes the given `command` and reads, logs, and returns resulting output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:15.319460" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:15.318919" elapsed="0.000661"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:15.320752" level="INFO">${output} = ens3: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1458
        inet 10.30.170.219  netmask 255.255.254.0  broadcast 10.30.171.255
        inet6 fe80::f816:3eff:feeb:7ce2  prefixlen 64  scopeid 0x2...</msg>
<var>${output}</var>
<arg>${output}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:15.319957" elapsed="0.000858"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:15.319630" elapsed="0.001258"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:15.318887" elapsed="0.002136"/>
</if>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-20T23:19:15.321109" elapsed="0.000064"/>
</return>
<msg time="2026-10-20T23:19:15.321436" level="INFO">${tmp} = ens3: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1458
        inet 10.30.170.219  netmask 255.255.254.0  broadcast 10.30.171.255
        inet6 fe80::f816:3eff:feeb:7ce2  prefixlen 64  scopeid 0x2...</msg>
<var>${tmp}</var>
<arg>${switch}</arg>
<arg>/sbin/ifconfig</arg>
<doc>Wraps the Execute Command keyword so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:15.303204" elapsed="0.018291"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:15.322606" level="INFO">ens3: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1458
        inet 10.30.170.219  netmask 255.255.254.0  broadcast 10.30.171.255
        inet6 fe80::f816:3eff:feeb:7ce2  prefixlen 64  scopeid 0x20&lt;link&gt;
        ether fa:16:3e:eb:7c:e2  txqueuelen 1000  (Ethernet)
        RX packets 12623  bytes 21134591 (21.1 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 8668  bytes 4033300 (4.0 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73&lt;UP,LOOPBACK,RUNNING&gt;  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10&lt;host&gt;
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 310  bytes 27934 (27.9 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 310  bytes 27934 (27.9 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

s1: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1500
        inet6 fe80::e007:e3ff:fe56:6d42  prefixlen 64  scopeid 0x20&lt;link&gt;
        ether e2:07:e3:56:6d:42  txqueuelen 1000  (Ethernet)
        RX packets 1  bytes 110 (110.0 B)
        RX errors 0  dropped 1  overruns 0  frame 0
        TX packets 5  bytes 426 (426.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0</msg>
<arg>${tmp}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:15.321997" elapsed="0.000777"/>
</kw>
<kw name="Execute Command Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:19:15.324851" level="INFO">Executing command 'sudo ovs-vsctl show'.</msg>
<msg time="2026-10-20T23:19:15.374264" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:19:15.374544" level="INFO">${output} = ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_versio...</msg>
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:19:15.324523" elapsed="0.050075"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:15.323935" elapsed="0.050766"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${output}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:15.375076" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:15.374757" elapsed="0.000433"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:15.323898" elapsed="0.051334"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Execute Command" owner="Telnet">
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes the given `command` and reads, logs, and returns resulting output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:15.375881" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:15.375375" elapsed="0.000621"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:15.377101" level="INFO">${output} = ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_versio...</msg>
<var>${output}</var>
<arg>${output}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:15.376371" elapsed="0.000787"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:15.376045" elapsed="0.001186"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:15.375339" elapsed="0.001934"/>
</if>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-20T23:19:15.377378" elapsed="0.000063"/>
</return>
<msg time="2026-10-20T23:19:15.377690" level="INFO">${output} = ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_versio...</msg>
<var>${output}</var>
<arg>${switch}</arg>
<arg>${cmd}</arg>
<doc>Wraps the Execute Command keyword so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:15.323372" elapsed="0.054378"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:15.378806" level="INFO">ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        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-10-20T23:19:15.378170" elapsed="0.000750"/>
</kw>
<for flavor="IN">
<iter>
<if>
<branch type="IF" condition="&quot;${should_exist}&quot; == &quot;true&quot;">
<kw name="Should Match Regexp" owner="BuiltIn">
<msg time="2026-10-20T23:19:15.381170" level="FAIL">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</msg>
<arg>${output}</arg>
<arg>${str}</arg>
<doc>Fails if the `string` does not match the regular expression `pattern`.</doc>
<status status="FAIL" start="2026-10-20T23:19:15.380014" elapsed="0.001343">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</status>
</kw>
<status status="FAIL" start="2026-10-20T23:19:15.379512" elapsed="0.001998">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</status>
</branch>
<status status="FAIL" start="2026-10-20T23:19:15.379481" elapsed="0.002099">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</status>
</if>
<if>
<branch type="IF" condition="&quot;${should_exist}&quot; == &quot;false&quot;">
<kw name="Should Not Match Regexp" owner="BuiltIn">
<arg>${output}</arg>
<arg>${str}</arg>
<doc>Fails if the `string` matches the regular expression `pattern`.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:15.382054" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:15.381746" elapsed="0.000423"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:19:15.381710" elapsed="0.000508"/>
</if>
<var name="${str}">is_connected: true</var>
<status status="FAIL" start="2026-10-20T23:19:15.379419" elapsed="0.002943">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</status>
</iter>
<var>${str}</var>
<value>@{validations}</value>
<status status="FAIL" start="2026-10-20T23:19:15.379023" elapsed="0.003542">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</status>
</for>
<arg>${switch}</arg>
<arg>${switch.openflow_validation_cmd}</arg>
<arg>${switch.openflow_enable_validations}</arg>
<doc>A generic keyword that will execute one command on the switch, and check for each string in the @{validations} argument.  There is a boolean flag ${should_exist} that can be used to check that the validations are or are NOT in the output of the command executed.</doc>
<status status="FAIL" start="2026-10-20T23:19:15.293397" elapsed="0.089408">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</status>
</kw>
<kw name="Validate Switch Output" owner="SwitchUtils">
<kw name="Configure Connection Index And Prompt Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${switch.connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-10-20T23:19:16.391160" elapsed="0.000545"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:16.390607" elapsed="0.001190"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:16.390564" elapsed="0.001289"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Set Client Configuration" owner="SSHLibrary">
<arg>prompt=${switch.mgmt_prompt}</arg>
<arg>timeout=5s</arg>
<doc>Update the `configuration` of the current connection.</doc>
<status status="PASS" start="2026-10-20T23:19:16.392501" elapsed="0.000699"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:16.391969" elapsed="0.001314"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:16.391935" elapsed="0.001434"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Switch Connection" owner="Telnet">
<arg>${switch.connection_index}</arg>
<doc>Switches between active connections using an index or an alias.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:16.394005" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:16.393484" elapsed="0.000636"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:16.393451" elapsed="0.000718"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Set Prompt" owner="Telnet">
<arg>${switch.mgmt_prompt}</arg>
<arg>True</arg>
<doc>Sets the prompt used by the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:16.394804" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:16.394278" elapsed="0.000645"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:16.394246" elapsed="0.000727"/>
</if>
<arg>${switch}</arg>
<doc>when using multiple switch connections (e.g. more than one switch device) this keyword will switch the current connection index and prompt so that the following
Read or Write actions happen on the correct device.</doc>
<status status="PASS" start="2026-10-20T23:19:16.390093" elapsed="0.004976"/>
</kw>
<kw name="Read Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Read" owner="SSHLibrary">
<doc>Consumes and returns everything available on the server output.</doc>
<status status="PASS" start="2026-10-20T23:19:16.396565" elapsed="0.000374"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:16.396021" elapsed="0.000989"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:16.395985" elapsed="0.001077"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Read" owner="Telnet">
<doc>Reads everything that is currently available in the output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:16.397665" elapsed="0.000063"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:16.397172" elapsed="0.000620"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:16.397139" elapsed="0.000702"/>
</if>
<arg>${switch}</arg>
<doc>Wraps the Read command so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:16.395525" elapsed="0.002411"/>
</kw>
<kw name="Execute Command Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:19:16.399930" level="INFO">Executing command '/sbin/ifconfig'.</msg>
<msg time="2026-10-20T23:19:16.413212" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:19:16.413522" level="INFO">${output} = ens3: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1458
        inet 10.30.170.219  netmask 255.255.254.0  broadcast 10.30.171.255
        inet6 fe80::f816:3eff:feeb:7ce2  prefixlen 64  scopeid 0x2...</msg>
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:19:16.399594" elapsed="0.013986"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:16.399009" elapsed="0.014648"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${output}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:16.414085" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:16.413746" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:16.398972" elapsed="0.015272"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Execute Command" owner="Telnet">
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes the given `command` and reads, logs, and returns resulting output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:16.414906" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:16.414391" elapsed="0.000634"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:16.416166" level="INFO">${output} = ens3: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1458
        inet 10.30.170.219  netmask 255.255.254.0  broadcast 10.30.171.255
        inet6 fe80::f816:3eff:feeb:7ce2  prefixlen 64  scopeid 0x2...</msg>
<var>${output}</var>
<arg>${output}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:16.415403" elapsed="0.000823"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:16.415074" elapsed="0.001225"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:16.414355" elapsed="0.002023"/>
</if>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-20T23:19:16.416480" elapsed="0.000065"/>
</return>
<msg time="2026-10-20T23:19:16.416804" level="INFO">${tmp} = ens3: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1458
        inet 10.30.170.219  netmask 255.255.254.0  broadcast 10.30.171.255
        inet6 fe80::f816:3eff:feeb:7ce2  prefixlen 64  scopeid 0x2...</msg>
<var>${tmp}</var>
<arg>${switch}</arg>
<arg>/sbin/ifconfig</arg>
<doc>Wraps the Execute Command keyword so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:16.398480" elapsed="0.018381"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:16.418101" level="INFO">ens3: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1458
        inet 10.30.170.219  netmask 255.255.254.0  broadcast 10.30.171.255
        inet6 fe80::f816:3eff:feeb:7ce2  prefixlen 64  scopeid 0x20&lt;link&gt;
        ether fa:16:3e:eb:7c:e2  txqueuelen 1000  (Ethernet)
        RX packets 12635  bytes 21136067 (21.1 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 8684  bytes 4036684 (4.0 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73&lt;UP,LOOPBACK,RUNNING&gt;  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10&lt;host&gt;
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 310  bytes 27934 (27.9 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 310  bytes 27934 (27.9 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

s1: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1500
        inet6 fe80::e007:e3ff:fe56:6d42  prefixlen 64  scopeid 0x20&lt;link&gt;
        ether e2:07:e3:56:6d:42  txqueuelen 1000  (Ethernet)
        RX packets 2  bytes 220 (220.0 B)
        RX errors 0  dropped 2  overruns 0  frame 0
        TX packets 6  bytes 516 (516.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0</msg>
<arg>${tmp}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:16.417466" elapsed="0.000781"/>
</kw>
<kw name="Execute Command Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:19:16.420445" level="INFO">Executing command 'sudo ovs-vsctl show'.</msg>
<msg time="2026-10-20T23:19:16.490947" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:19:16.491190" level="INFO">${output} = ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_versio...</msg>
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:19:16.420084" elapsed="0.071159"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:16.419385" elapsed="0.071985"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${output}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:16.491795" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:16.491443" elapsed="0.000469"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:16.419345" elapsed="0.072609"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Execute Command" owner="Telnet">
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes the given `command` and reads, logs, and returns resulting output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:16.492601" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:16.492068" elapsed="0.000677"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:16.494142" level="INFO">${output} = ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_versio...</msg>
<var>${output}</var>
<arg>${output}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:16.493096" elapsed="0.001106"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:16.492796" elapsed="0.001481"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:16.492035" elapsed="0.002317"/>
</if>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-20T23:19:16.494429" elapsed="0.000058"/>
</return>
<msg time="2026-10-20T23:19:16.494741" level="INFO">${output} = ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_versio...</msg>
<var>${output}</var>
<arg>${switch}</arg>
<arg>${cmd}</arg>
<doc>Wraps the Execute Command keyword so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:16.418825" elapsed="0.075973"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:16.495854" level="INFO">ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        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-10-20T23:19:16.495222" elapsed="0.000747"/>
</kw>
<for flavor="IN">
<iter>
<if>
<branch type="IF" condition="&quot;${should_exist}&quot; == &quot;true&quot;">
<kw name="Should Match Regexp" owner="BuiltIn">
<msg time="2026-10-20T23:19:16.497951" level="FAIL">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</msg>
<arg>${output}</arg>
<arg>${str}</arg>
<doc>Fails if the `string` does not match the regular expression `pattern`.</doc>
<status status="FAIL" start="2026-10-20T23:19:16.497082" elapsed="0.001017">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</status>
</kw>
<status status="FAIL" start="2026-10-20T23:19:16.496573" elapsed="0.001671">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</status>
</branch>
<status status="FAIL" start="2026-10-20T23:19:16.496541" elapsed="0.001801">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</status>
</if>
<if>
<branch type="IF" condition="&quot;${should_exist}&quot; == &quot;false&quot;">
<kw name="Should Not Match Regexp" owner="BuiltIn">
<arg>${output}</arg>
<arg>${str}</arg>
<doc>Fails if the `string` matches the regular expression `pattern`.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:16.498830" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:16.498501" elapsed="0.000445"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:19:16.498454" elapsed="0.000541"/>
</if>
<var name="${str}">is_connected: true</var>
<status status="FAIL" start="2026-10-20T23:19:16.496480" elapsed="0.002605">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</status>
</iter>
<var>${str}</var>
<value>@{validations}</value>
<status status="FAIL" start="2026-10-20T23:19:16.496073" elapsed="0.003132">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</status>
</for>
<arg>${switch}</arg>
<arg>${switch.openflow_validation_cmd}</arg>
<arg>${switch.openflow_enable_validations}</arg>
<doc>A generic keyword that will execute one command on the switch, and check for each string in the @{validations} argument.  There is a boolean flag ${should_exist} that can be used to check that the validations are or are NOT in the output of the command executed.</doc>
<status status="FAIL" start="2026-10-20T23:19:16.388656" elapsed="0.110853">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</status>
</kw>
<kw name="Validate Switch Output" owner="SwitchUtils">
<kw name="Configure Connection Index And Prompt Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${switch.connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-10-20T23:19:17.508018" elapsed="0.000531"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:17.507460" elapsed="0.001179"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:17.507416" elapsed="0.001278"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Set Client Configuration" owner="SSHLibrary">
<arg>prompt=${switch.mgmt_prompt}</arg>
<arg>timeout=5s</arg>
<doc>Update the `configuration` of the current connection.</doc>
<status status="PASS" start="2026-10-20T23:19:17.509369" elapsed="0.000701"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:17.508838" elapsed="0.001318"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:17.508804" elapsed="0.001405"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Switch Connection" owner="Telnet">
<arg>${switch.connection_index}</arg>
<doc>Switches between active connections using an index or an alias.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:17.510879" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:17.510353" elapsed="0.000642"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:17.510289" elapsed="0.000755"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Set Prompt" owner="Telnet">
<arg>${switch.mgmt_prompt}</arg>
<arg>True</arg>
<doc>Sets the prompt used by the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:17.511661" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:17.511154" elapsed="0.000651"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:17.511122" elapsed="0.000734"/>
</if>
<arg>${switch}</arg>
<doc>when using multiple switch connections (e.g. more than one switch device) this keyword will switch the current connection index and prompt so that the following
Read or Write actions happen on the correct device.</doc>
<status status="PASS" start="2026-10-20T23:19:17.506945" elapsed="0.005010"/>
</kw>
<kw name="Read Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Read" owner="SSHLibrary">
<doc>Consumes and returns everything available on the server output.</doc>
<status status="PASS" start="2026-10-20T23:19:17.513461" elapsed="0.000379"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:17.512917" elapsed="0.000993"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:17.512880" elapsed="0.001082"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Read" owner="Telnet">
<doc>Reads everything that is currently available in the output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:17.514564" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:17.514072" elapsed="0.000599"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:17.514040" elapsed="0.000700"/>
</if>
<arg>${switch}</arg>
<doc>Wraps the Read command so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:17.512407" elapsed="0.002430"/>
</kw>
<kw name="Execute Command Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:19:17.516855" level="INFO">Executing command '/sbin/ifconfig'.</msg>
<msg time="2026-10-20T23:19:17.530276" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:19:17.530579" level="INFO">${output} = ens3: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1458
        inet 10.30.170.219  netmask 255.255.254.0  broadcast 10.30.171.255
        inet6 fe80::f816:3eff:feeb:7ce2  prefixlen 64  scopeid 0x2...</msg>
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:19:17.516513" elapsed="0.014134"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:17.515920" elapsed="0.014838"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${output}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:17.531157" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:17.530814" elapsed="0.000458"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:17.515884" elapsed="0.015461"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Execute Command" owner="Telnet">
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes the given `command` and reads, logs, and returns resulting output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:17.531969" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:17.531461" elapsed="0.000623"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:17.533227" level="INFO">${output} = ens3: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1458
        inet 10.30.170.219  netmask 255.255.254.0  broadcast 10.30.171.255
        inet6 fe80::f816:3eff:feeb:7ce2  prefixlen 64  scopeid 0x2...</msg>
<var>${output}</var>
<arg>${output}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:17.532462" elapsed="0.000824"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:17.532133" elapsed="0.001256"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:17.531429" elapsed="0.002004"/>
</if>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-20T23:19:17.533510" elapsed="0.000066"/>
</return>
<msg time="2026-10-20T23:19:17.533822" level="INFO">${tmp} = ens3: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1458
        inet 10.30.170.219  netmask 255.255.254.0  broadcast 10.30.171.255
        inet6 fe80::f816:3eff:feeb:7ce2  prefixlen 64  scopeid 0x2...</msg>
<var>${tmp}</var>
<arg>${switch}</arg>
<arg>/sbin/ifconfig</arg>
<doc>Wraps the Execute Command keyword so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:17.515374" elapsed="0.018504"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:17.534941" level="INFO">ens3: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1458
        inet 10.30.170.219  netmask 255.255.254.0  broadcast 10.30.171.255
        inet6 fe80::f816:3eff:feeb:7ce2  prefixlen 64  scopeid 0x20&lt;link&gt;
        ether fa:16:3e:eb:7c:e2  txqueuelen 1000  (Ethernet)
        RX packets 12655  bytes 21138107 (21.1 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 8705  bytes 4046870 (4.0 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73&lt;UP,LOOPBACK,RUNNING&gt;  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10&lt;host&gt;
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 310  bytes 27934 (27.9 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 310  bytes 27934 (27.9 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

s1: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1500
        inet6 fe80::e007:e3ff:fe56:6d42  prefixlen 64  scopeid 0x20&lt;link&gt;
        ether e2:07:e3:56:6d:42  txqueuelen 1000  (Ethernet)
        RX packets 2  bytes 220 (220.0 B)
        RX errors 0  dropped 2  overruns 0  frame 0
        TX packets 6  bytes 516 (516.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0</msg>
<arg>${tmp}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:17.534302" elapsed="0.000884"/>
</kw>
<kw name="Execute Command Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:19:17.537564" level="INFO">Executing command 'sudo ovs-vsctl show'.</msg>
<msg time="2026-10-20T23:19:17.610809" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:19:17.611073" level="INFO">${output} = ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_versio...</msg>
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:19:17.537227" elapsed="0.073900"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:17.536635" elapsed="0.074575"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${output}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:17.611677" elapsed="0.000070"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:17.611267" elapsed="0.000556"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:17.536597" elapsed="0.075271"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Execute Command" owner="Telnet">
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes the given `command` and reads, logs, and returns resulting output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:17.612513" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:17.611983" elapsed="0.000648"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:17.613772" level="INFO">${output} = ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_versio...</msg>
<var>${output}</var>
<arg>${output}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:17.613000" elapsed="0.000831"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:17.612681" elapsed="0.001224"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:17.611950" elapsed="0.001998"/>
</if>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-20T23:19:17.614022" elapsed="0.000063"/>
</return>
<msg time="2026-10-20T23:19:17.614340" level="INFO">${output} = ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_versio...</msg>
<var>${output}</var>
<arg>${switch}</arg>
<arg>${cmd}</arg>
<doc>Wraps the Execute Command keyword so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:17.536075" elapsed="0.078322"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:17.615437" level="INFO">ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        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-10-20T23:19:17.614830" elapsed="0.000724"/>
</kw>
<for flavor="IN">
<iter>
<if>
<branch type="IF" condition="&quot;${should_exist}&quot; == &quot;true&quot;">
<kw name="Should Match Regexp" owner="BuiltIn">
<msg time="2026-10-20T23:19:17.617558" level="FAIL">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</msg>
<arg>${output}</arg>
<arg>${str}</arg>
<doc>Fails if the `string` does not match the regular expression `pattern`.</doc>
<status status="FAIL" start="2026-10-20T23:19:17.616680" elapsed="0.001031">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</status>
</kw>
<status status="FAIL" start="2026-10-20T23:19:17.616160" elapsed="0.001724">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</status>
</branch>
<status status="FAIL" start="2026-10-20T23:19:17.616128" elapsed="0.001841">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</status>
</if>
<if>
<branch type="IF" condition="&quot;${should_exist}&quot; == &quot;false&quot;">
<kw name="Should Not Match Regexp" owner="BuiltIn">
<arg>${output}</arg>
<arg>${str}</arg>
<doc>Fails if the `string` matches the regular expression `pattern`.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:17.618450" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:17.618110" elapsed="0.000455"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:19:17.618075" elapsed="0.000538"/>
</if>
<var name="${str}">is_connected: true</var>
<status status="FAIL" start="2026-10-20T23:19:17.616067" elapsed="0.002667">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</status>
</iter>
<var>${str}</var>
<value>@{validations}</value>
<status status="FAIL" start="2026-10-20T23:19:17.615661" elapsed="0.003202">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</status>
</for>
<arg>${switch}</arg>
<arg>${switch.openflow_validation_cmd}</arg>
<arg>${switch.openflow_enable_validations}</arg>
<doc>A generic keyword that will execute one command on the switch, and check for each string in the @{validations} argument.  There is a boolean flag ${should_exist} that can be used to check that the validations are or are NOT in the output of the command executed.</doc>
<status status="FAIL" start="2026-10-20T23:19:17.505495" elapsed="0.113574">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</status>
</kw>
<kw name="Validate Switch Output" owner="SwitchUtils">
<kw name="Configure Connection Index And Prompt Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${switch.connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-10-20T23:19:18.627463" elapsed="0.000549"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:18.626883" elapsed="0.001227"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:18.626841" elapsed="0.001324"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Set Client Configuration" owner="SSHLibrary">
<arg>prompt=${switch.mgmt_prompt}</arg>
<arg>timeout=5s</arg>
<doc>Update the `configuration` of the current connection.</doc>
<status status="PASS" start="2026-10-20T23:19:18.628993" elapsed="0.000781"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:18.628284" elapsed="0.001575"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:18.628250" elapsed="0.001661"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Switch Connection" owner="Telnet">
<arg>${switch.connection_index}</arg>
<doc>Switches between active connections using an index or an alias.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:18.630553" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:18.630025" elapsed="0.000643"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:18.629992" elapsed="0.000725"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Set Prompt" owner="Telnet">
<arg>${switch.mgmt_prompt}</arg>
<arg>True</arg>
<doc>Sets the prompt used by the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:18.631347" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:18.630848" elapsed="0.000617"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:18.630816" elapsed="0.000699"/>
</if>
<arg>${switch}</arg>
<doc>when using multiple switch connections (e.g. more than one switch device) this keyword will switch the current connection index and prompt so that the following
Read or Write actions happen on the correct device.</doc>
<status status="PASS" start="2026-10-20T23:19:18.626381" elapsed="0.005233"/>
</kw>
<kw name="Read Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Read" owner="SSHLibrary">
<doc>Consumes and returns everything available on the server output.</doc>
<status status="PASS" start="2026-10-20T23:19:18.633062" elapsed="0.000394"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:18.632556" elapsed="0.000970"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:18.632519" elapsed="0.001057"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Read" owner="Telnet">
<doc>Reads everything that is currently available in the output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:18.634164" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:18.633686" elapsed="0.000582"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:18.633653" elapsed="0.000694"/>
</if>
<arg>${switch}</arg>
<doc>Wraps the Read command so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:18.632057" elapsed="0.002389"/>
</kw>
<kw name="Execute Command Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:19:18.639175" level="INFO">Executing command '/sbin/ifconfig'.</msg>
<msg time="2026-10-20T23:19:18.652567" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:19:18.652856" level="INFO">${output} = ens3: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1458
        inet 10.30.170.219  netmask 255.255.254.0  broadcast 10.30.171.255
        inet6 fe80::f816:3eff:feeb:7ce2  prefixlen 64  scopeid 0x2...</msg>
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:19:18.638849" elapsed="0.014068"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:18.638212" elapsed="0.014781"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${output}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:18.653449" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:18.653048" elapsed="0.000526"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:18.635485" elapsed="0.018133"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Execute Command" owner="Telnet">
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes the given `command` and reads, logs, and returns resulting output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:18.654256" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:18.653734" elapsed="0.000673"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:18.655556" level="INFO">${output} = ens3: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1458
        inet 10.30.170.219  netmask 255.255.254.0  broadcast 10.30.171.255
        inet6 fe80::f816:3eff:feeb:7ce2  prefixlen 64  scopeid 0x2...</msg>
<var>${output}</var>
<arg>${output}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:18.654783" elapsed="0.000833"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:18.654458" elapsed="0.001229"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:18.653701" elapsed="0.002030"/>
</if>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-20T23:19:18.655858" elapsed="0.000065"/>
</return>
<msg time="2026-10-20T23:19:18.656148" level="INFO">${tmp} = ens3: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1458
        inet 10.30.170.219  netmask 255.255.254.0  broadcast 10.30.171.255
        inet6 fe80::f816:3eff:feeb:7ce2  prefixlen 64  scopeid 0x2...</msg>
<var>${tmp}</var>
<arg>${switch}</arg>
<arg>/sbin/ifconfig</arg>
<doc>Wraps the Execute Command keyword so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:18.634989" elapsed="0.021214"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:18.657250" level="INFO">ens3: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1458
        inet 10.30.170.219  netmask 255.255.254.0  broadcast 10.30.171.255
        inet6 fe80::f816:3eff:feeb:7ce2  prefixlen 64  scopeid 0x20&lt;link&gt;
        ether fa:16:3e:eb:7c:e2  txqueuelen 1000  (Ethernet)
        RX packets 12666  bytes 21139353 (21.1 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 8719  bytes 4050122 (4.0 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73&lt;UP,LOOPBACK,RUNNING&gt;  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10&lt;host&gt;
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 310  bytes 27934 (27.9 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 310  bytes 27934 (27.9 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

s1: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1500
        inet6 fe80::e007:e3ff:fe56:6d42  prefixlen 64  scopeid 0x20&lt;link&gt;
        ether e2:07:e3:56:6d:42  txqueuelen 1000  (Ethernet)
        RX packets 2  bytes 220 (220.0 B)
        RX errors 0  dropped 2  overruns 0  frame 0
        TX packets 6  bytes 516 (516.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0</msg>
<arg>${tmp}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:18.656645" elapsed="0.000779"/>
</kw>
<kw name="Execute Command Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:19:18.659451" level="INFO">Executing command 'sudo ovs-vsctl show'.</msg>
<msg time="2026-10-20T23:19:18.730833" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:19:18.731079" level="INFO">${output} = ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_versio...</msg>
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:19:18.659114" elapsed="0.072084"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:18.658520" elapsed="0.072760"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${output}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:18.731724" elapsed="0.000070"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:18.731389" elapsed="0.000477"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:18.658482" elapsed="0.073428"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Execute Command" owner="Telnet">
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes the given `command` and reads, logs, and returns resulting output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:18.732548" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:18.732024" elapsed="0.000642"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:18.733790" level="INFO">${output} = ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_versio...</msg>
<var>${output}</var>
<arg>${output}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:18.733040" elapsed="0.000809"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:18.732718" elapsed="0.001203"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:18.731991" elapsed="0.001973"/>
</if>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-20T23:19:18.734037" elapsed="0.000057"/>
</return>
<msg time="2026-10-20T23:19:18.734341" level="INFO">${output} = ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_versio...</msg>
<var>${output}</var>
<arg>${switch}</arg>
<arg>${cmd}</arg>
<doc>Wraps the Execute Command keyword so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:18.657961" elapsed="0.076437"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:18.735432" level="INFO">ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        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-10-20T23:19:18.734829" elapsed="0.000718"/>
</kw>
<for flavor="IN">
<iter>
<if>
<branch type="IF" condition="&quot;${should_exist}&quot; == &quot;true&quot;">
<kw name="Should Match Regexp" owner="BuiltIn">
<msg time="2026-10-20T23:19:18.737530" level="FAIL">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</msg>
<arg>${output}</arg>
<arg>${str}</arg>
<doc>Fails if the `string` does not match the regular expression `pattern`.</doc>
<status status="FAIL" start="2026-10-20T23:19:18.736658" elapsed="0.001027">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</status>
</kw>
<status status="FAIL" start="2026-10-20T23:19:18.736139" elapsed="0.001717">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</status>
</branch>
<status status="FAIL" start="2026-10-20T23:19:18.736108" elapsed="0.001818">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</status>
</if>
<if>
<branch type="IF" condition="&quot;${should_exist}&quot; == &quot;false&quot;">
<kw name="Should Not Match Regexp" owner="BuiltIn">
<arg>${output}</arg>
<arg>${str}</arg>
<doc>Fails if the `string` matches the regular expression `pattern`.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:18.738405" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:18.738066" elapsed="0.000454"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:19:18.738032" elapsed="0.000537"/>
</if>
<var name="${str}">is_connected: true</var>
<status status="FAIL" start="2026-10-20T23:19:18.736047" elapsed="0.002613">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</status>
</iter>
<var>${str}</var>
<value>@{validations}</value>
<status status="FAIL" start="2026-10-20T23:19:18.735650" elapsed="0.003157">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</status>
</for>
<arg>${switch}</arg>
<arg>${switch.openflow_validation_cmd}</arg>
<arg>${switch.openflow_enable_validations}</arg>
<doc>A generic keyword that will execute one command on the switch, and check for each string in the @{validations} argument.  There is a boolean flag ${should_exist} that can be used to check that the validations are or are NOT in the output of the command executed.</doc>
<status status="FAIL" start="2026-10-20T23:19:18.624932" elapsed="0.114083">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</status>
</kw>
<kw name="Validate Switch Output" owner="SwitchUtils">
<kw name="Configure Connection Index And Prompt Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${switch.connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-10-20T23:19:19.747436" elapsed="0.000515"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:19.746869" elapsed="0.001170"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:19.746826" elapsed="0.001267"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Set Client Configuration" owner="SSHLibrary">
<arg>prompt=${switch.mgmt_prompt}</arg>
<arg>timeout=5s</arg>
<doc>Update the `configuration` of the current connection.</doc>
<status status="PASS" start="2026-10-20T23:19:19.748744" elapsed="0.000752"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:19.748210" elapsed="0.001368"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:19.748177" elapsed="0.001452"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Switch Connection" owner="Telnet">
<arg>${switch.connection_index}</arg>
<doc>Switches between active connections using an index or an alias.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:19.750259" elapsed="0.000173"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:19.749743" elapsed="0.000767"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:19.749709" elapsed="0.000852"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Set Prompt" owner="Telnet">
<arg>${switch.mgmt_prompt}</arg>
<arg>True</arg>
<doc>Sets the prompt used by the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:19.751176" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:19.750673" elapsed="0.000620"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:19.750641" elapsed="0.001083"/>
</if>
<arg>${switch}</arg>
<doc>when using multiple switch connections (e.g. more than one switch device) this keyword will switch the current connection index and prompt so that the following
Read or Write actions happen on the correct device.</doc>
<status status="PASS" start="2026-10-20T23:19:19.746366" elapsed="0.005483"/>
</kw>
<kw name="Read Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Read" owner="SSHLibrary">
<doc>Consumes and returns everything available on the server output.</doc>
<status status="PASS" start="2026-10-20T23:19:19.753371" elapsed="0.000721"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:19.752814" elapsed="0.001350"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:19.752754" elapsed="0.001463"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Read" owner="Telnet">
<doc>Reads everything that is currently available in the output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:19.755010" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:19.754499" elapsed="0.000621"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:19.754298" elapsed="0.000871"/>
</if>
<arg>${switch}</arg>
<doc>Wraps the Read command so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:19.752285" elapsed="0.002982"/>
</kw>
<kw name="Execute Command Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:19:19.757293" level="INFO">Executing command '/sbin/ifconfig'.</msg>
<msg time="2026-10-20T23:19:19.770397" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:19:19.770646" level="INFO">${output} = ens3: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1458
        inet 10.30.170.219  netmask 255.255.254.0  broadcast 10.30.171.255
        inet6 fe80::f816:3eff:feeb:7ce2  prefixlen 64  scopeid 0x2...</msg>
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:19:19.756978" elapsed="0.013726"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:19.756390" elapsed="0.014421"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${output}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:19.771207" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:19.770868" elapsed="0.000487"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:19.756352" elapsed="0.015049"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Execute Command" owner="Telnet">
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes the given `command` and reads, logs, and returns resulting output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:19.772030" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:19.771517" elapsed="0.000643"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:19.773349" level="INFO">${output} = ens3: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1458
        inet 10.30.170.219  netmask 255.255.254.0  broadcast 10.30.171.255
        inet6 fe80::f816:3eff:feeb:7ce2  prefixlen 64  scopeid 0x2...</msg>
<var>${output}</var>
<arg>${output}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:19.772544" elapsed="0.000871"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:19.772211" elapsed="0.001279"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:19.771485" elapsed="0.002049"/>
</if>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-20T23:19:19.773611" elapsed="0.000062"/>
</return>
<msg time="2026-10-20T23:19:19.773923" level="INFO">${tmp} = ens3: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1458
        inet 10.30.170.219  netmask 255.255.254.0  broadcast 10.30.171.255
        inet6 fe80::f816:3eff:feeb:7ce2  prefixlen 64  scopeid 0x2...</msg>
<var>${tmp}</var>
<arg>${switch}</arg>
<arg>/sbin/ifconfig</arg>
<doc>Wraps the Execute Command keyword so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:19.755842" elapsed="0.018139"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:19.775032" level="INFO">ens3: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1458
        inet 10.30.170.219  netmask 255.255.254.0  broadcast 10.30.171.255
        inet6 fe80::f816:3eff:feeb:7ce2  prefixlen 64  scopeid 0x20&lt;link&gt;
        ether fa:16:3e:eb:7c:e2  txqueuelen 1000  (Ethernet)
        RX packets 12675  bytes 21140459 (21.1 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 8732  bytes 4053300 (4.0 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73&lt;UP,LOOPBACK,RUNNING&gt;  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10&lt;host&gt;
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 310  bytes 27934 (27.9 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 310  bytes 27934 (27.9 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

s1: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1500
        inet6 fe80::e007:e3ff:fe56:6d42  prefixlen 64  scopeid 0x20&lt;link&gt;
        ether e2:07:e3:56:6d:42  txqueuelen 1000  (Ethernet)
        RX packets 2  bytes 220 (220.0 B)
        RX errors 0  dropped 2  overruns 0  frame 0
        TX packets 7  bytes 586 (586.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0</msg>
<arg>${tmp}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:19.774430" elapsed="0.000747"/>
</kw>
<kw name="Execute Command Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:19:19.777211" level="INFO">Executing command 'sudo ovs-vsctl show'.</msg>
<msg time="2026-10-20T23:19:19.850722" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:19:19.851016" level="INFO">${output} = ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
            is_connected: true
        Port s1
            Interface s1
              ...</msg>
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:19:19.776904" elapsed="0.074167"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:19.776285" elapsed="0.074869"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${output}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:19.851595" elapsed="0.000130"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:19.851209" elapsed="0.000616"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:19.776247" elapsed="0.075623"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Execute Command" owner="Telnet">
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes the given `command` and reads, logs, and returns resulting output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:19.852531" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:19.851991" elapsed="0.000659"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:19.853837" level="INFO">${output} = ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
            is_connected: true
        Port s1
            Interface s1
              ...</msg>
<var>${output}</var>
<arg>${output}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:19.853024" elapsed="0.000873"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:19.852700" elapsed="0.001273"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:19.851956" elapsed="0.002062"/>
</if>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-20T23:19:19.854093" elapsed="0.000061"/>
</return>
<msg time="2026-10-20T23:19:19.854415" level="INFO">${output} = ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
            is_connected: true
        Port s1
            Interface s1
              ...</msg>
<var>${output}</var>
<arg>${switch}</arg>
<arg>${cmd}</arg>
<doc>Wraps the Execute Command keyword so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:19.775733" elapsed="0.078738"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:19.855525" level="INFO">ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
            is_connected: true
        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-10-20T23:19:19.854915" elapsed="0.000727"/>
</kw>
<for flavor="IN">
<iter>
<if>
<branch type="IF" condition="&quot;${should_exist}&quot; == &quot;true&quot;">
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${output}</arg>
<arg>${str}</arg>
<doc>Fails if the `string` does not match the regular expression `pattern`.</doc>
<status status="PASS" start="2026-10-20T23:19:19.856762" elapsed="0.000788"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:19.856238" elapsed="0.001395"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:19.856205" elapsed="0.001481"/>
</if>
<if>
<branch type="IF" condition="&quot;${should_exist}&quot; == &quot;false&quot;">
<kw name="Should Not Match Regexp" owner="BuiltIn">
<arg>${output}</arg>
<arg>${str}</arg>
<doc>Fails if the `string` matches the regular expression `pattern`.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:19.858245" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:19.857822" elapsed="0.000571"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:19.857767" elapsed="0.000677"/>
</if>
<var name="${str}">is_connected: true</var>
<status status="PASS" start="2026-10-20T23:19:19.856143" elapsed="0.002350"/>
</iter>
<var>${str}</var>
<value>@{validations}</value>
<status status="PASS" start="2026-10-20T23:19:19.855746" elapsed="0.002807"/>
</for>
<arg>${switch}</arg>
<arg>${switch.openflow_validation_cmd}</arg>
<arg>${switch.openflow_enable_validations}</arg>
<doc>A generic keyword that will execute one command on the switch, and check for each string in the @{validations} argument.  There is a boolean flag ${should_exist} that can be used to check that the validations are or are NOT in the output of the command executed.</doc>
<status status="PASS" start="2026-10-20T23:19:19.744882" elapsed="0.113782"/>
</kw>
<arg>10s</arg>
<arg>1s</arg>
<arg>Validate Switch Output</arg>
<arg>${switch}</arg>
<arg>${switch.openflow_validation_cmd}</arg>
<arg>${switch.openflow_enable_validations}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-10-20T23:19:14.181514" elapsed="5.677284"/>
</kw>
<kw name="Read Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Read" owner="SSHLibrary">
<doc>Consumes and returns everything available on the server output.</doc>
<status status="PASS" start="2026-10-20T23:19:19.860281" elapsed="0.000365"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:19.859763" elapsed="0.000951"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:19.859727" elapsed="0.001036"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Read" owner="Telnet">
<doc>Reads everything that is currently available in the output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:19.861397" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:19.860899" elapsed="0.000606"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:19.860866" elapsed="0.000688"/>
</if>
<arg>${switch}</arg>
<doc>Wraps the Read command so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:19.859260" elapsed="0.002391"/>
</kw>
<arg>${test_switch}</arg>
<doc>The commands neccessary to configure openflow on the given switch object should exist in the switch.base_openflow_config attribute.  Also, the commands/logic to verify that openflow is working are checked in this keyword and come
from switch.openflow_validation_cmd output where the validation strings are
stored in switch.openflow_enable_validations</doc>
<status status="PASS" start="2026-10-20T23:19:13.910830" elapsed="5.950931"/>
</kw>
<kw name="Enable OpenFlow" owner="SwitchUtils">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:19.863556" level="INFO">Will toggle openflow to be ON</msg>
<arg>Will toggle openflow to be ON</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:19.862980" elapsed="0.000694"/>
</kw>
<kw name="Iterate Switch Commands From List" owner="SwitchUtils">
<kw name="Configure Connection Index And Prompt Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${switch.connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-10-20T23:19:19.868724" elapsed="0.000470"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:19.868168" elapsed="0.001103"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:19.868129" elapsed="0.001227"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Set Client Configuration" owner="SSHLibrary">
<arg>prompt=${switch.mgmt_prompt}</arg>
<arg>timeout=5s</arg>
<doc>Update the `configuration` of the current connection.</doc>
<status status="PASS" start="2026-10-20T23:19:19.869999" elapsed="0.000689"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:19.869473" elapsed="0.001298"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:19.869439" elapsed="0.001407"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Switch Connection" owner="Telnet">
<arg>${switch.connection_index}</arg>
<doc>Switches between active connections using an index or an alias.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:19.871484" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:19.870960" elapsed="0.000706"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:19.870926" elapsed="0.000794"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Set Prompt" owner="Telnet">
<arg>${switch.mgmt_prompt}</arg>
<arg>True</arg>
<doc>Sets the prompt used by the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:19.872373" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:19.871859" elapsed="0.000635"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:19.871823" elapsed="0.000721"/>
</if>
<arg>${switch}</arg>
<doc>when using multiple switch connections (e.g. more than one switch device) this keyword will switch the current connection index and prompt so that the following
Read or Write actions happen on the correct device.</doc>
<status status="PASS" start="2026-10-20T23:19:19.867678" elapsed="0.004964"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:19.874052" level="INFO">sudo ovs-vsctl set-controller s1 tcp:10.30.170.223</msg>
<arg>${cmd}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:19.873433" elapsed="0.000737"/>
</kw>
<kw name="Read Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Read" owner="SSHLibrary">
<doc>Consumes and returns everything available on the server output.</doc>
<status status="PASS" start="2026-10-20T23:19:19.875631" elapsed="0.000350"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:19.875111" elapsed="0.000938"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:19.875074" elapsed="0.001027"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Read" owner="Telnet">
<doc>Reads everything that is currently available in the output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:19.876701" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:19.876212" elapsed="0.000617"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:19.876178" elapsed="0.000701"/>
</if>
<arg>${switch}</arg>
<doc>Wraps the Read command so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:19.874625" elapsed="0.002348"/>
</kw>
<kw name="Execute Command Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:19:19.878981" level="INFO">Executing command 'sudo ovs-vsctl set-controller s1 tcp:10.30.170.223'.</msg>
<msg time="2026-10-20T23:19:19.910515" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:19:19.910750" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:19:19.878648" elapsed="0.032178"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:19.878059" elapsed="0.032844"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${output}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:19.911280" elapsed="0.000083"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:19.910959" elapsed="0.000479"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:19.878022" elapsed="0.033465"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Execute Command" owner="Telnet">
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes the given `command` and reads, logs, and returns resulting output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:19.912115" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:19.911601" elapsed="0.000633"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:19.913378" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>${output}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:19.912617" elapsed="0.000817"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:19.912283" elapsed="0.001224"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:19.911568" elapsed="0.001983"/>
</if>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-20T23:19:19.913623" elapsed="0.000057"/>
</return>
<arg>${switch}</arg>
<arg>${cmd}</arg>
<doc>Wraps the Execute Command keyword so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:19.877512" elapsed="0.036356"/>
</kw>
<var name="${cmd}">sudo ovs-vsctl set-controller s1 tcp:10.30.170.223</var>
<status status="PASS" start="2026-10-20T23:19:19.873029" elapsed="0.040915"/>
</iter>
<var>${cmd}</var>
<value>@{cmd_list}</value>
<status status="PASS" start="2026-10-20T23:19:19.872740" elapsed="0.041265"/>
</for>
<arg>${switch}</arg>
<arg>${switch.openflow_enable_config}</arg>
<doc>Each string in the @{cmd_list} argument is executed on the switch.connection_index.</doc>
<status status="PASS" start="2026-10-20T23:19:19.866557" elapsed="0.047569"/>
</kw>
<kw name="Read Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Read" owner="SSHLibrary">
<doc>Consumes and returns everything available on the server output.</doc>
<status status="PASS" start="2026-10-20T23:19:19.915602" elapsed="0.000352"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:19.915070" elapsed="0.000952"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:19.915034" elapsed="0.001038"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Read" owner="Telnet">
<doc>Reads everything that is currently available in the output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:19.916672" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:19.916183" elapsed="0.000620"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:19.916149" elapsed="0.000706"/>
</if>
<arg>${switch}</arg>
<doc>Wraps the Read command so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:19.914581" elapsed="0.002369"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Validate Switch Output" owner="SwitchUtils">
<kw name="Configure Connection Index And Prompt Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${switch.connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-10-20T23:19:19.926074" elapsed="0.000467"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:19.925561" elapsed="0.001057"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:19.925521" elapsed="0.001149"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Set Client Configuration" owner="SSHLibrary">
<arg>prompt=${switch.mgmt_prompt}</arg>
<arg>timeout=5s</arg>
<doc>Update the `configuration` of the current connection.</doc>
<status status="PASS" start="2026-10-20T23:19:19.927297" elapsed="0.000698"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:19.926804" elapsed="0.001272"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:19.926749" elapsed="0.001377"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Switch Connection" owner="Telnet">
<arg>${switch.connection_index}</arg>
<doc>Switches between active connections using an index or an alias.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:19.928862" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:19.928237" elapsed="0.000762"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:19.928204" elapsed="0.000853"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Set Prompt" owner="Telnet">
<arg>${switch.mgmt_prompt}</arg>
<arg>True</arg>
<doc>Sets the prompt used by the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:19.929678" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:19.929167" elapsed="0.000651"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:19.929134" elapsed="0.000735"/>
</if>
<arg>${switch}</arg>
<doc>when using multiple switch connections (e.g. more than one switch device) this keyword will switch the current connection index and prompt so that the following
Read or Write actions happen on the correct device.</doc>
<status status="PASS" start="2026-10-20T23:19:19.925064" elapsed="0.004903"/>
</kw>
<kw name="Read Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Read" owner="SSHLibrary">
<doc>Consumes and returns everything available on the server output.</doc>
<status status="PASS" start="2026-10-20T23:19:19.931408" elapsed="0.000331"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:19.930901" elapsed="0.000932"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:19.930865" elapsed="0.001021"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Read" owner="Telnet">
<doc>Reads everything that is currently available in the output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:19.932490" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:19.931998" elapsed="0.000599"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:19.931965" elapsed="0.000681"/>
</if>
<arg>${switch}</arg>
<doc>Wraps the Read command so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:19.930416" elapsed="0.002326"/>
</kw>
<kw name="Execute Command Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:19:19.934730" level="INFO">Executing command '/sbin/ifconfig'.</msg>
<msg time="2026-10-20T23:19:19.960419" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:19:19.960660" level="INFO">${output} = ens3: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1458
        inet 10.30.170.219  netmask 255.255.254.0  broadcast 10.30.171.255
        inet6 fe80::f816:3eff:feeb:7ce2  prefixlen 64  scopeid 0x2...</msg>
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:19:19.934420" elapsed="0.026297"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:19.933817" elapsed="0.027003"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${output}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:19.961199" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:19.960877" elapsed="0.000467"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:19.933757" elapsed="0.027633"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Execute Command" owner="Telnet">
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes the given `command` and reads, logs, and returns resulting output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:19.962039" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:19.961505" elapsed="0.000653"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:19.963354" level="INFO">${output} = ens3: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1458
        inet 10.30.170.219  netmask 255.255.254.0  broadcast 10.30.171.255
        inet6 fe80::f816:3eff:feeb:7ce2  prefixlen 64  scopeid 0x2...</msg>
<var>${output}</var>
<arg>${output}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:19.962597" elapsed="0.000821"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:19.962208" elapsed="0.001284"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:19.961472" elapsed="0.002064"/>
</if>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-20T23:19:19.963609" elapsed="0.000056"/>
</return>
<msg time="2026-10-20T23:19:19.963905" level="INFO">${tmp} = ens3: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1458
        inet 10.30.170.219  netmask 255.255.254.0  broadcast 10.30.171.255
        inet6 fe80::f816:3eff:feeb:7ce2  prefixlen 64  scopeid 0x2...</msg>
<var>${tmp}</var>
<arg>${switch}</arg>
<arg>/sbin/ifconfig</arg>
<doc>Wraps the Execute Command keyword so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:19.933267" elapsed="0.030695"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:19.965028" level="INFO">ens3: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1458
        inet 10.30.170.219  netmask 255.255.254.0  broadcast 10.30.171.255
        inet6 fe80::f816:3eff:feeb:7ce2  prefixlen 64  scopeid 0x20&lt;link&gt;
        ether fa:16:3e:eb:7c:e2  txqueuelen 1000  (Ethernet)
        RX packets 12688  bytes 21142117 (21.1 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 8750  bytes 4057192 (4.0 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73&lt;UP,LOOPBACK,RUNNING&gt;  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10&lt;host&gt;
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 310  bytes 27934 (27.9 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 310  bytes 27934 (27.9 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

s1: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1500
        inet6 fe80::e007:e3ff:fe56:6d42  prefixlen 64  scopeid 0x20&lt;link&gt;
        ether e2:07:e3:56:6d:42  txqueuelen 1000  (Ethernet)
        RX packets 2  bytes 220 (220.0 B)
        RX errors 0  dropped 2  overruns 0  frame 0
        TX packets 7  bytes 586 (586.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0</msg>
<arg>${tmp}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:19.964428" elapsed="0.000742"/>
</kw>
<kw name="Execute Command Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:19:19.967196" level="INFO">Executing command 'sudo ovs-vsctl show'.</msg>
<msg time="2026-10-20T23:19:20.018211" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:19:20.018489" level="INFO">${output} = ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_versio...</msg>
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:19:19.966889" elapsed="0.051655"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:19.966264" elapsed="0.052357"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${output}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:20.019103" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:20.018744" elapsed="0.000478"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:19.966226" elapsed="0.053040"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Execute Command" owner="Telnet">
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes the given `command` and reads, logs, and returns resulting output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:20.019929" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:20.019415" elapsed="0.000635"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:20.021154" level="INFO">${output} = ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_versio...</msg>
<var>${output}</var>
<arg>${output}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:20.020437" elapsed="0.000776"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:20.020101" elapsed="0.001187"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:20.019380" elapsed="0.001982"/>
</if>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-20T23:19:20.021439" elapsed="0.000057"/>
</return>
<msg time="2026-10-20T23:19:20.021715" level="INFO">${output} = ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_versio...</msg>
<var>${output}</var>
<arg>${switch}</arg>
<arg>${cmd}</arg>
<doc>Wraps the Execute Command keyword so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:19.965721" elapsed="0.056049"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:20.022848" level="INFO">ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        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-10-20T23:19:20.022219" elapsed="0.000748"/>
</kw>
<for flavor="IN">
<iter>
<if>
<branch type="IF" condition="&quot;${should_exist}&quot; == &quot;true&quot;">
<kw name="Should Match Regexp" owner="BuiltIn">
<msg time="2026-10-20T23:19:20.024955" level="FAIL">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</msg>
<arg>${output}</arg>
<arg>${str}</arg>
<doc>Fails if the `string` does not match the regular expression `pattern`.</doc>
<status status="FAIL" start="2026-10-20T23:19:20.024088" elapsed="0.001023">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</status>
</kw>
<status status="FAIL" start="2026-10-20T23:19:20.023572" elapsed="0.002026">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</status>
</branch>
<status status="FAIL" start="2026-10-20T23:19:20.023540" elapsed="0.002136">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</status>
</if>
<if>
<branch type="IF" condition="&quot;${should_exist}&quot; == &quot;false&quot;">
<kw name="Should Not Match Regexp" owner="BuiltIn">
<arg>${output}</arg>
<arg>${str}</arg>
<doc>Fails if the `string` matches the regular expression `pattern`.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:20.026154" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:20.025841" elapsed="0.000443"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:19:20.025805" elapsed="0.000560"/>
</if>
<var name="${str}">is_connected: true</var>
<status status="FAIL" start="2026-10-20T23:19:20.023477" elapsed="0.002983">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</status>
</iter>
<var>${str}</var>
<value>@{validations}</value>
<status status="FAIL" start="2026-10-20T23:19:20.023064" elapsed="0.003517">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</status>
</for>
<arg>${switch}</arg>
<arg>${switch.openflow_validation_cmd}</arg>
<arg>${switch.openflow_enable_validations}</arg>
<doc>A generic keyword that will execute one command on the switch, and check for each string in the @{validations} argument.  There is a boolean flag ${should_exist} that can be used to check that the validations are or are NOT in the output of the command executed.</doc>
<status status="FAIL" start="2026-10-20T23:19:19.923698" elapsed="0.103111">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</status>
</kw>
<kw name="Validate Switch Output" owner="SwitchUtils">
<kw name="Configure Connection Index And Prompt Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${switch.connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-10-20T23:19:21.035193" elapsed="0.000531"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:21.034620" elapsed="0.001216"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:21.034576" elapsed="0.001317"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Set Client Configuration" owner="SSHLibrary">
<arg>prompt=${switch.mgmt_prompt}</arg>
<arg>timeout=5s</arg>
<doc>Update the `configuration` of the current connection.</doc>
<status status="PASS" start="2026-10-20T23:19:21.036543" elapsed="0.000706"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:21.036007" elapsed="0.001354"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:21.035974" elapsed="0.001442"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Switch Connection" owner="Telnet">
<arg>${switch.connection_index}</arg>
<doc>Switches between active connections using an index or an alias.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:21.038048" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:21.037529" elapsed="0.000633"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:21.037495" elapsed="0.000717"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Set Prompt" owner="Telnet">
<arg>${switch.mgmt_prompt}</arg>
<arg>True</arg>
<doc>Sets the prompt used by the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:21.038851" elapsed="0.000135"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:21.038351" elapsed="0.000716"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:21.038288" elapsed="0.000832"/>
</if>
<arg>${switch}</arg>
<doc>when using multiple switch connections (e.g. more than one switch device) this keyword will switch the current connection index and prompt so that the following
Read or Write actions happen on the correct device.</doc>
<status status="PASS" start="2026-10-20T23:19:21.034104" elapsed="0.005116"/>
</kw>
<kw name="Read Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Read" owner="SSHLibrary">
<doc>Consumes and returns everything available on the server output.</doc>
<status status="PASS" start="2026-10-20T23:19:21.040693" elapsed="0.000366"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:21.040172" elapsed="0.000958"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:21.040135" elapsed="0.001047"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Read" owner="Telnet">
<doc>Reads everything that is currently available in the output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:21.041868" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:21.041296" elapsed="0.000683"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:21.041262" elapsed="0.000768"/>
</if>
<arg>${switch}</arg>
<doc>Wraps the Read command so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:21.039677" elapsed="0.002450"/>
</kw>
<kw name="Execute Command Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:19:21.044255" level="INFO">Executing command '/sbin/ifconfig'.</msg>
<msg time="2026-10-20T23:19:21.057670" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:19:21.057962" level="INFO">${output} = ens3: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1458
        inet 10.30.170.219  netmask 255.255.254.0  broadcast 10.30.171.255
        inet6 fe80::f816:3eff:feeb:7ce2  prefixlen 64  scopeid 0x2...</msg>
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:19:21.043927" elapsed="0.014094"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:21.043267" elapsed="0.014834"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${output}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:21.058546" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:21.058157" elapsed="0.000508"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:21.043230" elapsed="0.015478"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Execute Command" owner="Telnet">
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes the given `command` and reads, logs, and returns resulting output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:21.059402" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:21.058848" elapsed="0.000675"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:21.060676" level="INFO">${output} = ens3: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1458
        inet 10.30.170.219  netmask 255.255.254.0  broadcast 10.30.171.255
        inet6 fe80::f816:3eff:feeb:7ce2  prefixlen 64  scopeid 0x2...</msg>
<var>${output}</var>
<arg>${output}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:21.059899" elapsed="0.000838"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:21.059573" elapsed="0.001259"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:21.058791" elapsed="0.002087"/>
</if>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-20T23:19:21.060968" elapsed="0.000064"/>
</return>
<msg time="2026-10-20T23:19:21.061255" level="INFO">${tmp} = ens3: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1458
        inet 10.30.170.219  netmask 255.255.254.0  broadcast 10.30.171.255
        inet6 fe80::f816:3eff:feeb:7ce2  prefixlen 64  scopeid 0x2...</msg>
<var>${tmp}</var>
<arg>${switch}</arg>
<arg>/sbin/ifconfig</arg>
<doc>Wraps the Execute Command keyword so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:21.042706" elapsed="0.018634"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:21.062397" level="INFO">ens3: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1458
        inet 10.30.170.219  netmask 255.255.254.0  broadcast 10.30.171.255
        inet6 fe80::f816:3eff:feeb:7ce2  prefixlen 64  scopeid 0x20&lt;link&gt;
        ether fa:16:3e:eb:7c:e2  txqueuelen 1000  (Ethernet)
        RX packets 12711  bytes 21144527 (21.1 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 8776  bytes 4067716 (4.0 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73&lt;UP,LOOPBACK,RUNNING&gt;  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10&lt;host&gt;
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 310  bytes 27934 (27.9 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 310  bytes 27934 (27.9 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

s1: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1500
        inet6 fe80::e007:e3ff:fe56:6d42  prefixlen 64  scopeid 0x20&lt;link&gt;
        ether e2:07:e3:56:6d:42  txqueuelen 1000  (Ethernet)
        RX packets 3  bytes 330 (330.0 B)
        RX errors 0  dropped 3  overruns 0  frame 0
        TX packets 7  bytes 586 (586.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0</msg>
<arg>${tmp}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:21.061768" elapsed="0.000772"/>
</kw>
<kw name="Execute Command Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:19:21.064606" level="INFO">Executing command 'sudo ovs-vsctl show'.</msg>
<msg time="2026-10-20T23:19:21.149430" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:19:21.149714" level="INFO">${output} = ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_versio...</msg>
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:19:21.064258" elapsed="0.085511"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:21.063662" elapsed="0.086219"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${output}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:21.150300" elapsed="0.000082"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:21.149941" elapsed="0.000513"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:21.063625" elapsed="0.086872"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Execute Command" owner="Telnet">
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes the given `command` and reads, logs, and returns resulting output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:21.151161" elapsed="0.000129"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:21.150616" elapsed="0.000786"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:21.152576" level="INFO">${output} = ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_versio...</msg>
<var>${output}</var>
<arg>${output}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:21.151778" elapsed="0.000856"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:21.151455" elapsed="0.001253"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:21.150583" elapsed="0.002169"/>
</if>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-20T23:19:21.152852" elapsed="0.000065"/>
</return>
<msg time="2026-10-20T23:19:21.153151" level="INFO">${output} = ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_versio...</msg>
<var>${output}</var>
<arg>${switch}</arg>
<arg>${cmd}</arg>
<doc>Wraps the Execute Command keyword so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:21.063086" elapsed="0.090119"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:21.154651" level="INFO">ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        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-10-20T23:19:21.153662" elapsed="0.001112"/>
</kw>
<for flavor="IN">
<iter>
<if>
<branch type="IF" condition="&quot;${should_exist}&quot; == &quot;true&quot;">
<kw name="Should Match Regexp" owner="BuiltIn">
<msg time="2026-10-20T23:19:21.156799" level="FAIL">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</msg>
<arg>${output}</arg>
<arg>${str}</arg>
<doc>Fails if the `string` does not match the regular expression `pattern`.</doc>
<status status="FAIL" start="2026-10-20T23:19:21.155943" elapsed="0.001029">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</status>
</kw>
<status status="FAIL" start="2026-10-20T23:19:21.155425" elapsed="0.001695">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</status>
</branch>
<status status="FAIL" start="2026-10-20T23:19:21.155392" elapsed="0.001796">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</status>
</if>
<if>
<branch type="IF" condition="&quot;${should_exist}&quot; == &quot;false&quot;">
<kw name="Should Not Match Regexp" owner="BuiltIn">
<arg>${output}</arg>
<arg>${str}</arg>
<doc>Fails if the `string` matches the regular expression `pattern`.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:21.157672" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:21.157359" elapsed="0.000427"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:19:21.157293" elapsed="0.000567"/>
</if>
<var name="${str}">is_connected: true</var>
<status status="FAIL" start="2026-10-20T23:19:21.155294" elapsed="0.002658">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</status>
</iter>
<var>${str}</var>
<value>@{validations}</value>
<status status="FAIL" start="2026-10-20T23:19:21.154902" elapsed="0.003172">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</status>
</for>
<arg>${switch}</arg>
<arg>${switch.openflow_validation_cmd}</arg>
<arg>${switch.openflow_enable_validations}</arg>
<doc>A generic keyword that will execute one command on the switch, and check for each string in the @{validations} argument.  There is a boolean flag ${should_exist} that can be used to check that the validations are or are NOT in the output of the command executed.</doc>
<status status="FAIL" start="2026-10-20T23:19:21.032631" elapsed="0.125649">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</status>
</kw>
<kw name="Validate Switch Output" owner="SwitchUtils">
<kw name="Configure Connection Index And Prompt Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${switch.connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-10-20T23:19:22.166770" elapsed="0.000530"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:22.166198" elapsed="0.001224"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:22.166142" elapsed="0.001335"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Set Client Configuration" owner="SSHLibrary">
<arg>prompt=${switch.mgmt_prompt}</arg>
<arg>timeout=5s</arg>
<doc>Update the `configuration` of the current connection.</doc>
<status status="PASS" start="2026-10-20T23:19:22.168128" elapsed="0.000743"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:22.167589" elapsed="0.001368"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:22.167556" elapsed="0.001454"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Switch Connection" owner="Telnet">
<arg>${switch.connection_index}</arg>
<doc>Switches between active connections using an index or an alias.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:22.169667" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:22.169123" elapsed="0.000659"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:22.169090" elapsed="0.000740"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Set Prompt" owner="Telnet">
<arg>${switch.mgmt_prompt}</arg>
<arg>True</arg>
<doc>Sets the prompt used by the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:22.170481" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:22.169965" elapsed="0.000633"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:22.169933" elapsed="0.000715"/>
</if>
<arg>${switch}</arg>
<doc>when using multiple switch connections (e.g. more than one switch device) this keyword will switch the current connection index and prompt so that the following
Read or Write actions happen on the correct device.</doc>
<status status="PASS" start="2026-10-20T23:19:22.165660" elapsed="0.005085"/>
</kw>
<kw name="Read Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Read" owner="SSHLibrary">
<doc>Consumes and returns everything available on the server output.</doc>
<status status="PASS" start="2026-10-20T23:19:22.172347" elapsed="0.000347"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:22.171809" elapsed="0.000956"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:22.171772" elapsed="0.001044"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Read" owner="Telnet">
<doc>Reads everything that is currently available in the output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:22.173449" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:22.172957" elapsed="0.000599"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:22.172923" elapsed="0.000682"/>
</if>
<arg>${switch}</arg>
<doc>Wraps the Read command so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:22.171334" elapsed="0.002367"/>
</kw>
<kw name="Execute Command Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:19:22.175688" level="INFO">Executing command '/sbin/ifconfig'.</msg>
<msg time="2026-10-20T23:19:22.190138" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:19:22.190488" level="INFO">${output} = ens3: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1458
        inet 10.30.170.219  netmask 255.255.254.0  broadcast 10.30.171.255
        inet6 fe80::f816:3eff:feeb:7ce2  prefixlen 64  scopeid 0x2...</msg>
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:19:22.175373" elapsed="0.015174"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:22.174768" elapsed="0.015855"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${output}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:22.191063" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:22.190677" elapsed="0.000516"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:22.174732" elapsed="0.016504"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Execute Command" owner="Telnet">
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes the given `command` and reads, logs, and returns resulting output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:22.191926" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:22.191379" elapsed="0.000662"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:22.193215" level="INFO">${output} = ens3: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1458
        inet 10.30.170.219  netmask 255.255.254.0  broadcast 10.30.171.255
        inet6 fe80::f816:3eff:feeb:7ce2  prefixlen 64  scopeid 0x2...</msg>
<var>${output}</var>
<arg>${output}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:22.192430" elapsed="0.000845"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:22.192092" elapsed="0.001288"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:22.191344" elapsed="0.002081"/>
</if>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-20T23:19:22.193501" elapsed="0.000065"/>
</return>
<msg time="2026-10-20T23:19:22.193787" level="INFO">${tmp} = ens3: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1458
        inet 10.30.170.219  netmask 255.255.254.0  broadcast 10.30.171.255
        inet6 fe80::f816:3eff:feeb:7ce2  prefixlen 64  scopeid 0x2...</msg>
<var>${tmp}</var>
<arg>${switch}</arg>
<arg>/sbin/ifconfig</arg>
<doc>Wraps the Execute Command keyword so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:22.174238" elapsed="0.019644"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:22.194941" level="INFO">ens3: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1458
        inet 10.30.170.219  netmask 255.255.254.0  broadcast 10.30.171.255
        inet6 fe80::f816:3eff:feeb:7ce2  prefixlen 64  scopeid 0x20&lt;link&gt;
        ether fa:16:3e:eb:7c:e2  txqueuelen 1000  (Ethernet)
        RX packets 12723  bytes 21145831 (21.1 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 8790  bytes 4070960 (4.0 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73&lt;UP,LOOPBACK,RUNNING&gt;  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10&lt;host&gt;
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 310  bytes 27934 (27.9 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 310  bytes 27934 (27.9 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

s1: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1500
        inet6 fe80::e007:e3ff:fe56:6d42  prefixlen 64  scopeid 0x20&lt;link&gt;
        ether e2:07:e3:56:6d:42  txqueuelen 1000  (Ethernet)
        RX packets 3  bytes 330 (330.0 B)
        RX errors 0  dropped 3  overruns 0  frame 0
        TX packets 7  bytes 586 (586.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0</msg>
<arg>${tmp}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:22.194343" elapsed="0.000743"/>
</kw>
<kw name="Execute Command Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:19:22.197506" level="INFO">Executing command 'sudo ovs-vsctl show'.</msg>
<msg time="2026-10-20T23:19:22.281141" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:19:22.281425" level="INFO">${output} = ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_versio...</msg>
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:19:22.197168" elapsed="0.084314"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:22.196549" elapsed="0.085010"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${output}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:22.281972" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:22.281612" elapsed="0.000477"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:22.196502" elapsed="0.085629"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Execute Command" owner="Telnet">
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes the given `command` and reads, logs, and returns resulting output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:22.282777" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:22.282243" elapsed="0.000681"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:22.284018" level="INFO">${output} = ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_versio...</msg>
<var>${output}</var>
<arg>${output}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:22.283278" elapsed="0.000890"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:22.282976" elapsed="0.001273"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:22.282211" elapsed="0.002081"/>
</if>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-20T23:19:22.284399" elapsed="0.000059"/>
</return>
<msg time="2026-10-20T23:19:22.284679" level="INFO">${output} = ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_versio...</msg>
<var>${output}</var>
<arg>${switch}</arg>
<arg>${cmd}</arg>
<doc>Wraps the Execute Command keyword so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:22.195636" elapsed="0.089097"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:22.285795" level="INFO">ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        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-10-20T23:19:22.285170" elapsed="0.000767"/>
</kw>
<for flavor="IN">
<iter>
<if>
<branch type="IF" condition="&quot;${should_exist}&quot; == &quot;true&quot;">
<kw name="Should Match Regexp" owner="BuiltIn">
<msg time="2026-10-20T23:19:22.287922" level="FAIL">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</msg>
<arg>${output}</arg>
<arg>${str}</arg>
<doc>Fails if the `string` does not match the regular expression `pattern`.</doc>
<status status="FAIL" start="2026-10-20T23:19:22.287054" elapsed="0.001022">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</status>
</kw>
<status status="FAIL" start="2026-10-20T23:19:22.286542" elapsed="0.001680">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</status>
</branch>
<status status="FAIL" start="2026-10-20T23:19:22.286511" elapsed="0.001778">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</status>
</if>
<if>
<branch type="IF" condition="&quot;${should_exist}&quot; == &quot;false&quot;">
<kw name="Should Not Match Regexp" owner="BuiltIn">
<arg>${output}</arg>
<arg>${str}</arg>
<doc>Fails if the `string` matches the regular expression `pattern`.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:22.288815" elapsed="0.000061"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:22.288503" elapsed="0.000445"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:19:22.288466" elapsed="0.000531"/>
</if>
<var name="${str}">is_connected: true</var>
<status status="FAIL" start="2026-10-20T23:19:22.286448" elapsed="0.002639">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</status>
</iter>
<var>${str}</var>
<value>@{validations}</value>
<status status="FAIL" start="2026-10-20T23:19:22.286046" elapsed="0.003174">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</status>
</for>
<arg>${switch}</arg>
<arg>${switch.openflow_validation_cmd}</arg>
<arg>${switch.openflow_enable_validations}</arg>
<doc>A generic keyword that will execute one command on the switch, and check for each string in the @{validations} argument.  There is a boolean flag ${should_exist} that can be used to check that the validations are or are NOT in the output of the command executed.</doc>
<status status="FAIL" start="2026-10-20T23:19:22.164193" elapsed="0.125313">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</status>
</kw>
<kw name="Validate Switch Output" owner="SwitchUtils">
<kw name="Configure Connection Index And Prompt Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${switch.connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-10-20T23:19:23.298004" elapsed="0.000536"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:23.297423" elapsed="0.001208"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:23.297378" elapsed="0.001309"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Set Client Configuration" owner="SSHLibrary">
<arg>prompt=${switch.mgmt_prompt}</arg>
<arg>timeout=5s</arg>
<doc>Update the `configuration` of the current connection.</doc>
<status status="PASS" start="2026-10-20T23:19:23.299349" elapsed="0.000709"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:23.298799" elapsed="0.001339"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:23.298767" elapsed="0.001422"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Switch Connection" owner="Telnet">
<arg>${switch.connection_index}</arg>
<doc>Switches between active connections using an index or an alias.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:23.300838" elapsed="0.000068"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:23.300299" elapsed="0.000677"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:23.300267" elapsed="0.000757"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Set Prompt" owner="Telnet">
<arg>${switch.mgmt_prompt}</arg>
<arg>True</arg>
<doc>Sets the prompt used by the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:23.301633" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:23.301131" elapsed="0.000614"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:23.301099" elapsed="0.000694"/>
</if>
<arg>${switch}</arg>
<doc>when using multiple switch connections (e.g. more than one switch device) this keyword will switch the current connection index and prompt so that the following
Read or Write actions happen on the correct device.</doc>
<status status="PASS" start="2026-10-20T23:19:23.296914" elapsed="0.005003"/>
</kw>
<kw name="Read Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Read" owner="SSHLibrary">
<doc>Consumes and returns everything available on the server output.</doc>
<status status="PASS" start="2026-10-20T23:19:23.303383" elapsed="0.000347"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:23.302829" elapsed="0.000968"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:23.302794" elapsed="0.001053"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Read" owner="Telnet">
<doc>Reads everything that is currently available in the output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:23.304577" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:23.303981" elapsed="0.000705"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:23.303947" elapsed="0.000788"/>
</if>
<arg>${switch}</arg>
<doc>Wraps the Read command so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:23.302366" elapsed="0.002465"/>
</kw>
<kw name="Execute Command Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:19:23.307149" level="INFO">Executing command '/sbin/ifconfig'.</msg>
<msg time="2026-10-20T23:19:23.320416" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:19:23.320668" level="INFO">${output} = ens3: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1458
        inet 10.30.170.219  netmask 255.255.254.0  broadcast 10.30.171.255
        inet6 fe80::f816:3eff:feeb:7ce2  prefixlen 64  scopeid 0x2...</msg>
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:19:23.306514" elapsed="0.014211"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:23.305924" elapsed="0.014877"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${output}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:23.321237" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:23.320855" elapsed="0.000527"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:23.305887" elapsed="0.015541"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Execute Command" owner="Telnet">
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes the given `command` and reads, logs, and returns resulting output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:23.322050" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:23.321543" elapsed="0.000623"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:23.323353" level="INFO">${output} = ens3: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1458
        inet 10.30.170.219  netmask 255.255.254.0  broadcast 10.30.171.255
        inet6 fe80::f816:3eff:feeb:7ce2  prefixlen 64  scopeid 0x2...</msg>
<var>${output}</var>
<arg>${output}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:23.322544" elapsed="0.000872"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:23.322216" elapsed="0.001272"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:23.321510" elapsed="0.002022"/>
</if>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-20T23:19:23.323609" elapsed="0.000068"/>
</return>
<msg time="2026-10-20T23:19:23.324019" level="INFO">${tmp} = ens3: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1458
        inet 10.30.170.219  netmask 255.255.254.0  broadcast 10.30.171.255
        inet6 fe80::f816:3eff:feeb:7ce2  prefixlen 64  scopeid 0x2...</msg>
<var>${tmp}</var>
<arg>${switch}</arg>
<arg>/sbin/ifconfig</arg>
<doc>Wraps the Execute Command keyword so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:23.305402" elapsed="0.018679"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:23.325157" level="INFO">ens3: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1458
        inet 10.30.170.219  netmask 255.255.254.0  broadcast 10.30.171.255
        inet6 fe80::f816:3eff:feeb:7ce2  prefixlen 64  scopeid 0x20&lt;link&gt;
        ether fa:16:3e:eb:7c:e2  txqueuelen 1000  (Ethernet)
        RX packets 12735  bytes 21147135 (21.1 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 8804  bytes 4074204 (4.0 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73&lt;UP,LOOPBACK,RUNNING&gt;  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10&lt;host&gt;
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 310  bytes 27934 (27.9 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 310  bytes 27934 (27.9 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

s1: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1500
        inet6 fe80::e007:e3ff:fe56:6d42  prefixlen 64  scopeid 0x20&lt;link&gt;
        ether e2:07:e3:56:6d:42  txqueuelen 1000  (Ethernet)
        RX packets 3  bytes 330 (330.0 B)
        RX errors 0  dropped 3  overruns 0  frame 0
        TX packets 7  bytes 586 (586.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0</msg>
<arg>${tmp}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:23.324547" elapsed="0.000752"/>
</kw>
<kw name="Execute Command Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:19:23.327361" level="INFO">Executing command 'sudo ovs-vsctl show'.</msg>
<msg time="2026-10-20T23:19:23.409140" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:19:23.409457" level="INFO">${output} = ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_versio...</msg>
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:19:23.327023" elapsed="0.082493"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:23.326425" elapsed="0.083174"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${output}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:23.410057" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:23.409656" elapsed="0.000518"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:23.326387" elapsed="0.083830"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Execute Command" owner="Telnet">
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes the given `command` and reads, logs, and returns resulting output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:23.410893" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:23.410364" elapsed="0.000645"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:23.412152" level="INFO">${output} = ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_versio...</msg>
<var>${output}</var>
<arg>${output}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:23.411389" elapsed="0.000821"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:23.411059" elapsed="0.001222"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:23.410300" elapsed="0.002054"/>
</if>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-20T23:19:23.412431" elapsed="0.000063"/>
</return>
<msg time="2026-10-20T23:19:23.412732" level="INFO">${output} = ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_versio...</msg>
<var>${output}</var>
<arg>${switch}</arg>
<arg>${cmd}</arg>
<doc>Wraps the Execute Command keyword so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:23.325853" elapsed="0.087010"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:23.413984" level="INFO">ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        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-10-20T23:19:23.413383" elapsed="0.000717"/>
</kw>
<for flavor="IN">
<iter>
<if>
<branch type="IF" condition="&quot;${should_exist}&quot; == &quot;true&quot;">
<kw name="Should Match Regexp" owner="BuiltIn">
<msg time="2026-10-20T23:19:23.416117" level="FAIL">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</msg>
<arg>${output}</arg>
<arg>${str}</arg>
<doc>Fails if the `string` does not match the regular expression `pattern`.</doc>
<status status="FAIL" start="2026-10-20T23:19:23.415236" elapsed="0.001028">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</status>
</kw>
<status status="FAIL" start="2026-10-20T23:19:23.414722" elapsed="0.001719">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</status>
</branch>
<status status="FAIL" start="2026-10-20T23:19:23.414690" elapsed="0.001822">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</status>
</if>
<if>
<branch type="IF" condition="&quot;${should_exist}&quot; == &quot;false&quot;">
<kw name="Should Not Match Regexp" owner="BuiltIn">
<arg>${output}</arg>
<arg>${str}</arg>
<doc>Fails if the `string` matches the regular expression `pattern`.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:23.417000" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:23.416664" elapsed="0.000453"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:19:23.416618" elapsed="0.000548"/>
</if>
<var name="${str}">is_connected: true</var>
<status status="FAIL" start="2026-10-20T23:19:23.414626" elapsed="0.002641">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</status>
</iter>
<var>${str}</var>
<value>@{validations}</value>
<status status="FAIL" start="2026-10-20T23:19:23.414212" elapsed="0.003213">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</status>
</for>
<arg>${switch}</arg>
<arg>${switch.openflow_validation_cmd}</arg>
<arg>${switch.openflow_enable_validations}</arg>
<doc>A generic keyword that will execute one command on the switch, and check for each string in the @{validations} argument.  There is a boolean flag ${should_exist} that can be used to check that the validations are or are NOT in the output of the command executed.</doc>
<status status="FAIL" start="2026-10-20T23:19:23.295436" elapsed="0.122199">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</status>
</kw>
<kw name="Validate Switch Output" owner="SwitchUtils">
<kw name="Configure Connection Index And Prompt Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${switch.connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-10-20T23:19:24.425994" elapsed="0.000523"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:24.425427" elapsed="0.001178"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:24.425384" elapsed="0.001275"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Set Client Configuration" owner="SSHLibrary">
<arg>prompt=${switch.mgmt_prompt}</arg>
<arg>timeout=5s</arg>
<doc>Update the `configuration` of the current connection.</doc>
<status status="PASS" start="2026-10-20T23:19:24.427301" elapsed="0.000726"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:24.426773" elapsed="0.001339"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:24.426740" elapsed="0.001423"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Switch Connection" owner="Telnet">
<arg>${switch.connection_index}</arg>
<doc>Switches between active connections using an index or an alias.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:24.428825" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:24.428288" elapsed="0.000678"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:24.428254" elapsed="0.000762"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Set Prompt" owner="Telnet">
<arg>${switch.mgmt_prompt}</arg>
<arg>True</arg>
<doc>Sets the prompt used by the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:24.429629" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:24.429124" elapsed="0.000620"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:24.429092" elapsed="0.000701"/>
</if>
<arg>${switch}</arg>
<doc>when using multiple switch connections (e.g. more than one switch device) this keyword will switch the current connection index and prompt so that the following
Read or Write actions happen on the correct device.</doc>
<status status="PASS" start="2026-10-20T23:19:24.424921" elapsed="0.004969"/>
</kw>
<kw name="Read Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Read" owner="SSHLibrary">
<doc>Consumes and returns everything available on the server output.</doc>
<status status="PASS" start="2026-10-20T23:19:24.431676" elapsed="0.000369"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:24.431153" elapsed="0.000961"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:24.431116" elapsed="0.001050"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Read" owner="Telnet">
<doc>Reads everything that is currently available in the output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:24.432772" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:24.432278" elapsed="0.000608"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:24.432244" elapsed="0.000723"/>
</if>
<arg>${switch}</arg>
<doc>Wraps the Read command so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:24.430358" elapsed="0.002709"/>
</kw>
<kw name="Execute Command Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:19:24.435170" level="INFO">Executing command '/sbin/ifconfig'.</msg>
<msg time="2026-10-20T23:19:24.449072" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:19:24.449583" level="INFO">${output} = ens3: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1458
        inet 10.30.170.219  netmask 255.255.254.0  broadcast 10.30.171.255
        inet6 fe80::f816:3eff:feeb:7ce2  prefixlen 64  scopeid 0x2...</msg>
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:19:24.434811" elapsed="0.014852"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:24.434136" elapsed="0.015626"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${output}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:24.450221" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:24.449828" elapsed="0.000540"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:24.434099" elapsed="0.016313"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Execute Command" owner="Telnet">
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes the given `command` and reads, logs, and returns resulting output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:24.451059" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:24.450526" elapsed="0.000650"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:24.452445" level="INFO">${output} = ens3: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1458
        inet 10.30.170.219  netmask 255.255.254.0  broadcast 10.30.171.255
        inet6 fe80::f816:3eff:feeb:7ce2  prefixlen 64  scopeid 0x2...</msg>
<var>${output}</var>
<arg>${output}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:24.451560" elapsed="0.000947"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:24.451225" elapsed="0.001356"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:24.450492" elapsed="0.002132"/>
</if>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-20T23:19:24.452700" elapsed="0.000064"/>
</return>
<msg time="2026-10-20T23:19:24.453055" level="INFO">${tmp} = ens3: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1458
        inet 10.30.170.219  netmask 255.255.254.0  broadcast 10.30.171.255
        inet6 fe80::f816:3eff:feeb:7ce2  prefixlen 64  scopeid 0x2...</msg>
<var>${tmp}</var>
<arg>${switch}</arg>
<arg>/sbin/ifconfig</arg>
<doc>Wraps the Execute Command keyword so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:24.433611" elapsed="0.019501"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:24.454174" level="INFO">ens3: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1458
        inet 10.30.170.219  netmask 255.255.254.0  broadcast 10.30.171.255
        inet6 fe80::f816:3eff:feeb:7ce2  prefixlen 64  scopeid 0x20&lt;link&gt;
        ether fa:16:3e:eb:7c:e2  txqueuelen 1000  (Ethernet)
        RX packets 12757  bytes 21149315 (21.1 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 8827  bytes 4084530 (4.0 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73&lt;UP,LOOPBACK,RUNNING&gt;  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10&lt;host&gt;
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 310  bytes 27934 (27.9 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 310  bytes 27934 (27.9 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

s1: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1500
        inet6 fe80::e007:e3ff:fe56:6d42  prefixlen 64  scopeid 0x20&lt;link&gt;
        ether e2:07:e3:56:6d:42  txqueuelen 1000  (Ethernet)
        RX packets 3  bytes 330 (330.0 B)
        RX errors 0  dropped 3  overruns 0  frame 0
        TX packets 7  bytes 586 (586.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0</msg>
<arg>${tmp}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:24.453567" elapsed="0.000778"/>
</kw>
<kw name="Execute Command Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:19:24.456369" level="INFO">Executing command 'sudo ovs-vsctl show'.</msg>
<msg time="2026-10-20T23:19:24.531545" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:19:24.531779" level="INFO">${output} = ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
            is_connected: true
        Port s1
            Interface s1
              ...</msg>
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:19:24.456016" elapsed="0.075816"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:24.455431" elapsed="0.076505"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${output}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:24.532351" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:24.531991" elapsed="0.000483"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:24.455392" elapsed="0.077126"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Execute Command" owner="Telnet">
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes the given `command` and reads, logs, and returns resulting output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:24.533174" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:24.532629" elapsed="0.000661"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:24.534448" level="INFO">${output} = ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
            is_connected: true
        Port s1
            Interface s1
              ...</msg>
<var>${output}</var>
<arg>${output}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:24.533671" elapsed="0.000836"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:24.533371" elapsed="0.001207"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:24.532597" elapsed="0.002024"/>
</if>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-20T23:19:24.534693" elapsed="0.000057"/>
</return>
<msg time="2026-10-20T23:19:24.534995" level="INFO">${output} = ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
            is_connected: true
        Port s1
            Interface s1
              ...</msg>
<var>${output}</var>
<arg>${switch}</arg>
<arg>${cmd}</arg>
<doc>Wraps the Execute Command keyword so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:24.454861" elapsed="0.080188"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:24.536099" level="INFO">ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
            is_connected: true
        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-10-20T23:19:24.535501" elapsed="0.000848"/>
</kw>
<for flavor="IN">
<iter>
<if>
<branch type="IF" condition="&quot;${should_exist}&quot; == &quot;true&quot;">
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${output}</arg>
<arg>${str}</arg>
<doc>Fails if the `string` does not match the regular expression `pattern`.</doc>
<status status="PASS" start="2026-10-20T23:19:24.537485" elapsed="0.000749"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:24.536965" elapsed="0.001376"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:24.536931" elapsed="0.001465"/>
</if>
<if>
<branch type="IF" condition="&quot;${should_exist}&quot; == &quot;false&quot;">
<kw name="Should Not Match Regexp" owner="BuiltIn">
<arg>${output}</arg>
<arg>${str}</arg>
<doc>Fails if the `string` matches the regular expression `pattern`.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:24.538953" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:24.538508" elapsed="0.000561"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:24.538475" elapsed="0.000643"/>
</if>
<var name="${str}">is_connected: true</var>
<status status="PASS" start="2026-10-20T23:19:24.536845" elapsed="0.002323"/>
</iter>
<var>${str}</var>
<value>@{validations}</value>
<status status="PASS" start="2026-10-20T23:19:24.536463" elapsed="0.002766"/>
</for>
<arg>${switch}</arg>
<arg>${switch.openflow_validation_cmd}</arg>
<arg>${switch.openflow_enable_validations}</arg>
<doc>A generic keyword that will execute one command on the switch, and check for each string in the @{validations} argument.  There is a boolean flag ${should_exist} that can be used to check that the validations are or are NOT in the output of the command executed.</doc>
<status status="PASS" start="2026-10-20T23:19:24.423489" elapsed="0.115880"/>
</kw>
<arg>10s</arg>
<arg>1s</arg>
<arg>Validate Switch Output</arg>
<arg>${switch}</arg>
<arg>${switch.openflow_validation_cmd}</arg>
<arg>${switch.openflow_enable_validations}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-10-20T23:19:19.917366" elapsed="4.622118"/>
</kw>
<arg>${test_switch}</arg>
<doc>executes the switch.openflow_enable_config on the given switch and validates that openflow is operational with the switch.openflow_validation_command against all the strings in the switch.openflow_enable_validations list.</doc>
<status status="PASS" start="2026-10-20T23:19:19.862115" elapsed="4.677514"/>
</kw>
<kw name="Get Switch Datapath ID" owner="SwitchUtils">
<kw name="Configure Connection Index And Prompt Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${switch.connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-10-20T23:19:24.542032" elapsed="0.000469"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:24.541501" elapsed="0.001076"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:24.541453" elapsed="0.001175"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Set Client Configuration" owner="SSHLibrary">
<arg>prompt=${switch.mgmt_prompt}</arg>
<arg>timeout=5s</arg>
<doc>Update the `configuration` of the current connection.</doc>
<status status="PASS" start="2026-10-20T23:19:24.543259" elapsed="0.000694"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:24.542737" elapsed="0.001299"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:24.542704" elapsed="0.001383"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Switch Connection" owner="Telnet">
<arg>${switch.connection_index}</arg>
<doc>Switches between active connections using an index or an alias.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:24.544718" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:24.544198" elapsed="0.000629"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:24.544165" elapsed="0.000710"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Set Prompt" owner="Telnet">
<arg>${switch.mgmt_prompt}</arg>
<arg>True</arg>
<doc>Sets the prompt used by the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:24.545518" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:24.545008" elapsed="0.000625"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:24.544976" elapsed="0.000705"/>
</if>
<arg>${switch}</arg>
<doc>when using multiple switch connections (e.g. more than one switch device) this keyword will switch the current connection index and prompt so that the following
Read or Write actions happen on the correct device.</doc>
<status status="PASS" start="2026-10-20T23:19:24.540986" elapsed="0.004792"/>
</kw>
<kw name="Read Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Read" owner="SSHLibrary">
<doc>Consumes and returns everything available on the server output.</doc>
<status status="PASS" start="2026-10-20T23:19:24.547580" elapsed="0.000350"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:24.547053" elapsed="0.000946"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:24.546699" elapsed="0.001351"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Read" owner="Telnet">
<doc>Reads everything that is currently available in the output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:24.548653" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:24.548160" elapsed="0.000596"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:24.548127" elapsed="0.000676"/>
</if>
<arg>${switch}</arg>
<doc>Wraps the Read command so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:24.546237" elapsed="0.002679"/>
</kw>
<kw name="Execute Command Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:19:24.551031" level="INFO">Executing command '/sbin/ifconfig s1 | grep -o -E "([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}"'.</msg>
<msg time="2026-10-20T23:19:24.589975" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:19:24.590217" level="INFO">${output} = e2:07:e3:56:6d:42</msg>
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:19:24.550702" elapsed="0.039564"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:24.550100" elapsed="0.040280"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${output}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:24.590766" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:24.590436" elapsed="0.000445"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:24.550063" elapsed="0.040883"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Execute Command" owner="Telnet">
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes the given `command` and reads, logs, and returns resulting output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:24.591584" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:24.591061" elapsed="0.000639"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:24.592812" level="INFO">${output} = e2:07:e3:56:6d:42</msg>
<var>${output}</var>
<arg>${output}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:24.592072" elapsed="0.000794"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:24.591748" elapsed="0.001287"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:24.591028" elapsed="0.002055"/>
</if>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-20T23:19:24.593160" elapsed="0.000059"/>
</return>
<msg time="2026-10-20T23:19:24.593509" level="INFO">${switch.datapath_id_output_string} = e2:07:e3:56:6d:42</msg>
<var>${switch.datapath_id_output_string}</var>
<arg>${switch}</arg>
<arg>${switch.datapath_id_output_command}</arg>
<doc>Wraps the Execute Command keyword so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:24.549444" elapsed="0.044120"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:24.594728" level="INFO">e2:07:e3:56:6d:42</msg>
<arg>${switch.datapath_id_output_string}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:24.594004" elapsed="0.000836"/>
</kw>
<kw name="Call Method" owner="BuiltIn">
<arg>${switch}</arg>
<arg>update_datapath_id</arg>
<doc>Calls the named method of the given object with the provided arguments.</doc>
<status status="PASS" start="2026-10-20T23:19:24.595189" elapsed="0.000832"/>
</kw>
<return>
<value>${switch.datapath_id}</value>
<status status="PASS" start="2026-10-20T23:19:24.596125" elapsed="0.000058"/>
</return>
<msg time="2026-10-20T23:19:24.596562" level="INFO">${datapath_id_from_switch} = 248523506740546</msg>
<var>${datapath_id_from_switch}</var>
<arg>${test_switch}</arg>
<doc>Using the connection index for the given switch, will execute the command string
"datapath_id_output_command" which will store the output in switch.datapath_id_output_string.
The switch object method "update_datapath_id" is called which is assumed to place the ODL
friendly (decimal) version of the datapath id in to switch.datapath_id and the value is also
returned from this keyword.</doc>
<status status="PASS" start="2026-10-20T23:19:24.540044" elapsed="0.056572"/>
</kw>
<kw name="Verify Switch In Operational Data Store" owner="SwitchUtils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:19:24.606462" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes 
 path_url=/rests/data/opendaylight-inventory:nodes 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:19:24.606538" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:19:24.607022" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${REST_CONTEXT}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:19:24.597653" elapsed="0.010332">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes</status>
</kw>
<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-10-20T23:19:24.608501" elapsed="0.000049"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>openflow:${switch.datapath_id}</arg>
<doc>Fails if the `string` does not match the regular expression `pattern`.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:24.608952" elapsed="0.000045"/>
</kw>
<arg>${test_switch}</arg>
<doc>Verifies the existence of the switch.datapath_id in the operational datastore.</doc>
<status status="FAIL" start="2026-10-20T23:19:24.596971" elapsed="0.012223">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes</status>
</kw>
<kw name="Disable OpenFlow" owner="SwitchUtils">
<arg>${test_switch}</arg>
<doc>executes the switch.openflow_disable_config on the given switch and validates that openflow is NOT operational with the switch.openflow_validation_command against all the strings in the switch.openflow_disable_validations list.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:24.609585" elapsed="0.000051"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>3s</arg>
<arg>1s</arg>
<arg>Verify Switch Not In Operational Data Store</arg>
<arg>${test_switch}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:24.610042" elapsed="0.000044"/>
</kw>
<tag>switch_qualification</tag>
<timeout value="5 minutes"/>
<status status="FAIL" start="2026-10-20T23:19:13.909820" elapsed="10.700596">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes</status>
</test>
<kw name="Switch Qualification Suite Teardown" type="TEARDOWN">
<kw name="Cleanup Switch" owner="SwitchUtils">
<kw name="Iterate Switch Commands From List" owner="SwitchUtils">
<kw name="Configure Connection Index And Prompt Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${switch.connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-10-20T23:19:24.617129" elapsed="0.000370"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:24.616615" elapsed="0.000960"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:24.616574" elapsed="0.001054"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Set Client Configuration" owner="SSHLibrary">
<arg>prompt=${switch.mgmt_prompt}</arg>
<arg>timeout=5s</arg>
<doc>Update the `configuration` of the current connection.</doc>
<status status="PASS" start="2026-10-20T23:19:24.618247" elapsed="0.000940"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:24.617739" elapsed="0.001531"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:24.617706" elapsed="0.001648"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Switch Connection" owner="Telnet">
<arg>${switch.connection_index}</arg>
<doc>Switches between active connections using an index or an alias.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:24.619985" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:24.619472" elapsed="0.000627"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:24.619437" elapsed="0.000711"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Set Prompt" owner="Telnet">
<arg>${switch.mgmt_prompt}</arg>
<arg>True</arg>
<doc>Sets the prompt used by the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:24.620756" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:24.620256" elapsed="0.000614"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:24.620224" elapsed="0.000785"/>
</if>
<arg>${switch}</arg>
<doc>when using multiple switch connections (e.g. more than one switch device) this keyword will switch the current connection index and prompt so that the following
Read or Write actions happen on the correct device.</doc>
<status status="PASS" start="2026-10-20T23:19:24.616245" elapsed="0.004871"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:24.622472" level="INFO">/sbin/ifconfig -a | egrep '^s' | awk '{print "sudo ovs-vsctl del-br",$1}' | sh</msg>
<arg>${cmd}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:24.621920" elapsed="0.000647"/>
</kw>
<kw name="Read Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Read" owner="SSHLibrary">
<doc>Consumes and returns everything available on the server output.</doc>
<status status="PASS" start="2026-10-20T23:19:24.624170" elapsed="0.000283"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:24.623627" elapsed="0.000899"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:24.623572" elapsed="0.001006"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Read" owner="Telnet">
<doc>Reads everything that is currently available in the output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:24.625186" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:24.624694" elapsed="0.000600"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:24.624660" elapsed="0.000716"/>
</if>
<arg>${switch}</arg>
<doc>Wraps the Read command so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:24.623015" elapsed="0.002459"/>
</kw>
<kw name="Execute Command Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:19:24.627305" level="INFO">Executing command '/sbin/ifconfig -a | egrep '^s' | awk '{print "sudo ovs-vsctl del-br",$1}' | sh'.</msg>
<msg time="2026-10-20T23:19:24.661363" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-10-20T23:19:24.661562" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:19:24.627069" elapsed="0.034543"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:24.626457" elapsed="0.035232"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${output}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:24.662099" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:24.661743" elapsed="0.000470"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:24.626420" elapsed="0.035836"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Execute Command" owner="Telnet">
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes the given `command` and reads, logs, and returns resulting output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:24.662879" elapsed="0.000071"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:24.662397" elapsed="0.000628"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:24.664035" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>${output}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:24.663402" elapsed="0.000687"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:24.663074" elapsed="0.001087"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:24.662363" elapsed="0.001840"/>
</if>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-20T23:19:24.664278" elapsed="0.000092"/>
</return>
<arg>${switch}</arg>
<arg>${cmd}</arg>
<doc>Wraps the Execute Command keyword so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:24.626007" elapsed="0.038532"/>
</kw>
<var name="${cmd}">/sbin/ifconfig -a | egrep '^s' | awk '{print "sudo ovs-vsctl del-br",$1}' | sh</var>
<status status="PASS" start="2026-10-20T23:19:24.621521" elapsed="0.043092"/>
</iter>
<var>${cmd}</var>
<value>@{cmd_list}</value>
<status status="PASS" start="2026-10-20T23:19:24.621214" elapsed="0.043464"/>
</for>
<arg>${switch}</arg>
<arg>${switch.cleanup_cmds}</arg>
<doc>Each string in the @{cmd_list} argument is executed on the switch.connection_index.</doc>
<status status="PASS" start="2026-10-20T23:19:24.615257" elapsed="0.049530"/>
</kw>
<arg>${test_switch}</arg>
<doc>will execute and command strings stored in switch.cleanup_cmds</doc>
<status status="PASS" start="2026-10-20T23:19:24.612122" elapsed="0.052772"/>
</kw>
<kw name="Close All Connections" owner="SSHLibrary">
<doc>Closes all open connections.</doc>
<status status="PASS" start="2026-10-20T23:19:24.665193" elapsed="0.000447"/>
</kw>
<kw name="Close All Connections" owner="Telnet">
<doc>Closes all open connections and empties the connection cache.</doc>
<status status="PASS" start="2026-10-20T23:19:24.665944" elapsed="0.000238"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:24.611228" elapsed="0.055064"/>
</kw>
<doc>TODO</doc>
<status status="FAIL" start="2026-10-20T23:19:11.507977" elapsed="13.158404"/>
</suite>
<suite id="s1-s4-s2" name="020 OpenFlow Actions" source="/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Switch_Qualification/020_OpenFlow_Actions.robot">
<kw name="OpenFlow Actions Suite Setup" type="SETUP">
<kw name="Get Switch" owner="Ovs">
<msg time="2026-10-20T23:19:24.870938" level="INFO">${test_switch} = &lt;Ovs.Ovs object at 0x756aa4d172d0&gt;</msg>
<var>${test_switch}</var>
<arg>${SWITCH_CLASS}</arg>
<doc>Generic method that will allow Robot Code to pass a string
to this "keyword - Get Switch" and create an object of that
type.  (EX: Get Switch  OVS)</doc>
<status status="PASS" start="2026-10-20T23:19:24.870747" elapsed="0.000224"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:24.871814" level="INFO">${test_switch} = &lt;Ovs.Ovs object at 0x756aa4d172d0&gt;</msg>
<arg>${test_switch}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-20T23:19:24.871211" elapsed="0.000649"/>
</kw>
<kw name="Call Method" owner="BuiltIn">
<arg>${test_switch}</arg>
<arg>set_mgmt_ip</arg>
<arg>${SWITCH_IP}</arg>
<doc>Calls the named method of the given object with the provided arguments.</doc>
<status status="PASS" start="2026-10-20T23:19:24.872063" elapsed="0.000284"/>
</kw>
<kw name="Call Method" owner="BuiltIn">
<arg>${test_switch}</arg>
<arg>set_controller_ip</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<doc>Calls the named method of the given object with the provided arguments.</doc>
<status status="PASS" start="2026-10-20T23:19:24.872652" elapsed="0.000282"/>
</kw>
<kw name="Call Method" owner="BuiltIn">
<arg>${test_switch}</arg>
<arg>set_mgmt_prompt</arg>
<arg>${SWITCH_PROMPT}</arg>
<doc>Calls the named method of the given object with the provided arguments.</doc>
<status status="PASS" start="2026-10-20T23:19:24.873127" elapsed="0.000274"/>
</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 or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:24.875136" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:24.874861" elapsed="0.000389"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:24.874838" elapsed="0.000440"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:19:24.875645" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-10-20T23:19:24.875494" elapsed="0.000272"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:24.876274" level="INFO">Attempting to execute command "ps -elf | grep java" on remote system "10.30.170.223" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:24.875973" elapsed="0.000360"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:19:24.876819" 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-10-20T23:19:24.876517" elapsed="0.000327"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-20T23:19:24.878013" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:19:24.878088" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-20T23:19:24.877384" elapsed="0.000727"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:19:24.878270" elapsed="0.000367"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:19:24.879469" level="INFO">Logging into '10.30.170.223:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:19:25.526285" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-194-generic x86_64)

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

 System information as of Tue Oct 20 23:19:25 UTC 2026

  System load:  0.01               Processes:             118
  Usage of /:   14.0% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.170.223
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


[?2004h[jenkins@releng-34016-79-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-10-20T23:19:24.879206" elapsed="0.647263"/>
</kw>
<msg time="2026-10-20T23:19:25.526559" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:19:24.878807" elapsed="0.647834"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-10-20T23:19:24.877065" elapsed="0.649697"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:19:25.527337" level="INFO">Executing command 'ps -elf | grep java'.</msg>
<msg time="2026-10-20T23:19:25.549822" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:19:25.549993" level="INFO">${stdout} = 0 S jenkins     2027    1971 20  80   0 - 2100753 futex_ 23:10 ?      00:01:49 /usr/lib/jvm/java-21-openjdk-amd64/bin/java -Djava.security.properties=/tmp/karaf-0.25.0/etc/odl.java.security -XX:+Unloc...</msg>
<msg time="2026-10-20T23:19:25.550052" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:19:25.527082" elapsed="0.023000"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:19:25.550328" elapsed="0.000273"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:25.551370" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:25.550972" elapsed="0.000456"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:19:25.551697" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:19:25.551535" elapsed="0.000228"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:25.551504" elapsed="0.000290"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-10-20T23:19:25.551996" elapsed="0.000035"/>
</return>
<status status="PASS" start="2026-10-20T23:19:25.551864" elapsed="0.000209"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:25.551844" elapsed="0.000260"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:19:25.552149" elapsed="0.000018"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:19:25.553147" elapsed="0.000491"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-20T23:19:25.553904" elapsed="0.000220"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:19:25.554346" 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-10-20T23:19:25.552618" elapsed="0.001921"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-10-20T23:19:24.874486" elapsed="0.680222"/>
</kw>
<msg time="2026-10-20T23:19:25.554805" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:19:24.873954" elapsed="0.680914"/>
</kw>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>ps -elf | grep java</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-10-20T23:19:24.873564" elapsed="0.681544"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:25.556223" level="INFO">MAKE: OpenVswitch
MODEL: OVS
IP: 10.30.170.219
PROMPT: &gt;
CONTROLLER_IP: 10.30.170.223
MGMT_PROTOCOL: ssh</msg>
<arg>MAKE: ${test_switch.make}\nMODEL: ${test_switch.model}\nIP: ${test_switch.mgmt_ip}\nPROMPT: ${test_switch.mgmt_prompt}\nCONTROLLER_IP: ${test_switch.of_controller_ip}\nMGMT_PROTOCOL: ${test_switch.mgmt_protocol}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:25.555439" elapsed="0.000844"/>
</kw>
<kw name="Ping" owner="SwitchUtils">
<kw name="Run" owner="OperatingSystem">
<msg time="2026-10-20T23:19:25.557144" level="INFO">Running command 'ping 10.30.170.219 -c 1 -W 1'.</msg>
<msg time="2026-10-20T23:19:25.562953" level="INFO">${output} = PING 10.30.170.219 (10.30.170.219) 56(84) bytes of data.
64 bytes from 10.30.170.219: icmp_seq=1 ttl=64 time=1.06 ms

--- 10.30.170.219 ping statistics ---
1 packets transmitted, 1 received, 0% packet...</msg>
<var>${output}</var>
<arg>ping ${ip} -c 1 -W 1</arg>
<doc>*This keyword is considered deprecated. Use the [Process] library instead.*</doc>
<status status="PASS" start="2026-10-20T23:19:25.556991" elapsed="0.006003"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>1 packets transmitted, 1 received</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="PASS" start="2026-10-20T23:19:25.563280" elapsed="0.000443"/>
</kw>
<arg>${test_switch.mgmt_ip}</arg>
<status status="PASS" start="2026-10-20T23:19:25.556524" elapsed="0.007279"/>
</kw>
<kw name="Initialize Switch" owner="SwitchUtils">
<kw name="Connect To Switch" owner="SwitchUtils">
<kw name="Open Connection Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Call Method" owner="BuiltIn">
<arg>${switch}</arg>
<arg>set_ssh_key</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<doc>Calls the named method of the given object with the provided arguments.</doc>
<status status="PASS" start="2026-10-20T23:19:25.566251" elapsed="0.000429"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:25.565842" elapsed="0.000894"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:25.565817" elapsed="0.000954"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Call Method" owner="BuiltIn">
<arg>${switch}</arg>
<arg>set_mgmt_user</arg>
<arg>${TOOLS_SYSTEM_USER}</arg>
<doc>Calls the named method of the given object with the provided arguments.</doc>
<status status="PASS" start="2026-10-20T23:19:25.567238" elapsed="0.000396"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:25.566843" elapsed="0.000845"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:25.566821" elapsed="0.000900"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:19:25.568726" level="INFO">${connection_index} = 3</msg>
<var>${connection_index}</var>
<arg>${switch.mgmt_ip}</arg>
<arg>prompt=${switch.mgmt_prompt}</arg>
<arg>timeout=30s</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-20T23:19:25.568182" elapsed="0.000579"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:25.567793" elapsed="0.001021"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${connection_index}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:25.569124" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:25.568847" elapsed="0.000349"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:25.567771" elapsed="0.001454"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:19:25.570099" level="INFO">Logging into '10.30.170.219:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:19:25.931026" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Tue Oct 20 23:18:50 UTC 2026

  System load:  0.0                Processes:             110
  Usage of /:   19.8% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.219
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

5 updates can be applied immediately.
To see these additional updates run: apt list --upgradable

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


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


Last login: Tue Oct 20 23:19:11 2026 from 10.30.170.114
[?2004h[jenkins@releng-34016-79-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${switch.mgmt_user}</arg>
<arg>${switch.ssh_key}</arg>
<arg>any</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-10-20T23:19:25.569745" elapsed="0.361415"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:25.569295" elapsed="0.361930"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:25.569275" elapsed="0.361988"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Open Connection" owner="Telnet">
<var>${connection_index}</var>
<arg>${switch.mgmt_ip}</arg>
<doc>Opens a new Telnet connection to the given host and port.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:25.931773" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:25.931368" elapsed="0.000464"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:25.932460" level="INFO">${connection_index} = 3</msg>
<var>${connection_index}</var>
<arg>${connection_index}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:25.932093" elapsed="0.000392"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:25.931855" elapsed="0.000664"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:25.931340" elapsed="0.001199"/>
</if>
<return>
<value>${connection_index}</value>
<status status="PASS" start="2026-10-20T23:19:25.932577" elapsed="0.000037"/>
</return>
<msg time="2026-10-20T23:19:25.932817" level="INFO">${connection_index} = 3</msg>
<var>${connection_index}</var>
<arg>${switch}</arg>
<doc>Some switches require telnet access and others require ssh access.  Based on the
switch.mgmt_protocol, the connection open will be handled by the right robot
library (Telnet or SSHLibrary).  The connection_index is returned.</doc>
<status status="PASS" start="2026-10-20T23:19:25.565625" elapsed="0.367218"/>
</kw>
<kw name="Call Method" owner="BuiltIn">
<arg>${switch}</arg>
<arg>set_connection_index</arg>
<arg>${connection_index}</arg>
<doc>Calls the named method of the given object with the provided arguments.</doc>
<status status="PASS" start="2026-10-20T23:19:25.933049" elapsed="0.000290"/>
</kw>
<kw name="Configure Connection Index And Prompt Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${switch.connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-10-20T23:19:25.934099" elapsed="0.000165"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:25.933826" elapsed="0.000471"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:25.933810" elapsed="0.000527"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Set Client Configuration" owner="SSHLibrary">
<arg>prompt=${switch.mgmt_prompt}</arg>
<arg>timeout=5s</arg>
<doc>Update the `configuration` of the current connection.</doc>
<status status="PASS" start="2026-10-20T23:19:25.934633" elapsed="0.000261"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:25.934388" elapsed="0.000543"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:25.934373" elapsed="0.000595"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Switch Connection" owner="Telnet">
<arg>${switch.connection_index}</arg>
<doc>Switches between active connections using an index or an alias.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:25.935261" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:25.935019" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:25.935004" elapsed="0.000345"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Set Prompt" owner="Telnet">
<arg>${switch.mgmt_prompt}</arg>
<arg>True</arg>
<doc>Sets the prompt used by the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:25.935632" elapsed="0.000018"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:25.935398" elapsed="0.000285"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:25.935383" elapsed="0.000322"/>
</if>
<arg>${switch}</arg>
<doc>when using multiple switch connections (e.g. more than one switch device) this keyword will switch the current connection index and prompt so that the following
Read or Write actions happen on the correct device.</doc>
<status status="PASS" start="2026-10-20T23:19:25.933653" elapsed="0.002094"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Write Bare Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Write Bare" owner="SSHLibrary">
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-10-20T23:19:25.936607" elapsed="0.000183"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:25.936376" elapsed="0.000449"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:25.936359" elapsed="0.000489"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Write Bare" owner="Telnet">
<arg>${cmd}</arg>
<doc>Writes the given text, and nothing else, into the connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:25.937148" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:25.936907" elapsed="0.000290"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:25.936892" elapsed="0.000327"/>
</if>
<arg>${switch}</arg>
<arg>${cmd}</arg>
<doc>Wraps the Write Bare command so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:25.936179" elapsed="0.001087"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-10-20T23:19:26.937942" level="INFO">Slept 1 second.</msg>
<arg>1</arg>
<doc>Pauses execution for the given time.</doc>
<status status="PASS" start="2026-10-20T23:19:25.937478" elapsed="1.000700"/>
</kw>
<kw name="Read Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Read" owner="SSHLibrary">
<msg time="2026-10-20T23:19:26.940750" level="INFO">pwd</msg>
<doc>Consumes and returns everything available on the server output.</doc>
<status status="PASS" start="2026-10-20T23:19:26.940500" elapsed="0.000350"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:26.939805" elapsed="0.001112"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:26.939759" elapsed="0.001240"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Read" owner="Telnet">
<doc>Reads everything that is currently available in the output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:26.941692" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:26.941119" elapsed="0.000678"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:26.941085" elapsed="0.000765"/>
</if>
<arg>${switch}</arg>
<doc>Wraps the Read command so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:26.939365" elapsed="0.002583"/>
</kw>
<var name="${cmd}">pwd</var>
<status status="PASS" start="2026-10-20T23:19:25.935981" elapsed="1.006064"/>
</iter>
<var>${cmd}</var>
<value>@{switch.connection_configs}</value>
<status status="PASS" start="2026-10-20T23:19:25.935799" elapsed="1.006313"/>
</for>
<arg>${switch}</arg>
<doc>Will Open a connection to the switch, which will set the switch.connection_index.
For each switch.connection_configs string, a write bare will be executed on the
switch connection.  The write bare is done becuase some switch consoles require
extra input (CR/LF, etc.) that are needed.  The connection_configs strings should
be sufficient to put the switch console in to a usuable state so that further
interactions with the switch can be used with the robot keyword "Execute
Command"</doc>
<status status="PASS" start="2026-10-20T23:19:25.564711" elapsed="1.377511"/>
</kw>
<kw name="Configure Connection Index And Prompt Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${switch.connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-10-20T23:19:26.943822" elapsed="0.000371"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:26.943241" elapsed="0.001026"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:26.943205" elapsed="0.001144"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Set Client Configuration" owner="SSHLibrary">
<arg>prompt=${switch.mgmt_prompt}</arg>
<arg>timeout=5s</arg>
<doc>Update the `configuration` of the current connection.</doc>
<status status="PASS" start="2026-10-20T23:19:26.945030" elapsed="0.000596"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:26.944465" elapsed="0.001239"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:26.944431" elapsed="0.001324"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Switch Connection" owner="Telnet">
<arg>${switch.connection_index}</arg>
<doc>Switches between active connections using an index or an alias.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:26.946558" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:26.945947" elapsed="0.000823"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:26.945833" elapsed="0.000990"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Set Prompt" owner="Telnet">
<arg>${switch.mgmt_prompt}</arg>
<arg>True</arg>
<doc>Sets the prompt used by the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:26.947538" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:26.946937" elapsed="0.000718"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:26.946903" elapsed="0.000801"/>
</if>
<arg>${switch}</arg>
<doc>when using multiple switch connections (e.g. more than one switch device) this keyword will switch the current connection index and prompt so that the following
Read or Write actions happen on the correct device.</doc>
<status status="PASS" start="2026-10-20T23:19:26.942870" elapsed="0.004931"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Write Bare Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Write Bare" owner="SSHLibrary">
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-10-20T23:19:26.949734" elapsed="0.000475"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:26.949177" elapsed="0.001111"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:26.949142" elapsed="0.001253"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Write Bare" owner="Telnet">
<arg>${cmd}</arg>
<doc>Writes the given text, and nothing else, into the connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:26.951044" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:26.950507" elapsed="0.000649"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:26.950474" elapsed="0.000731"/>
</if>
<arg>${switch}</arg>
<arg>${cmd}</arg>
<doc>Wraps the Write Bare command so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:26.948756" elapsed="0.002670"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-10-20T23:19:27.952649" level="INFO">Slept 1 second.</msg>
<arg>1</arg>
<doc>Pauses execution for the given time.</doc>
<status status="PASS" start="2026-10-20T23:19:26.951848" elapsed="1.001007"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Read" owner="SSHLibrary">
<msg time="2026-10-20T23:19:27.955940" level="INFO">['/sbin/ifconfig -a | egrep \'^s\' | awk \'{print "sudo ovs-vsctl del-br",$1}\' | sh']</msg>
<doc>Consumes and returns everything available on the server output.</doc>
<status status="PASS" start="2026-10-20T23:19:27.955702" elapsed="0.000363"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:27.955050" elapsed="0.001082"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:27.954985" elapsed="0.001202"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Read" owner="Telnet">
<doc>Reads everything that is currently available in the output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:27.956856" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:27.956300" elapsed="0.000661"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:27.956266" elapsed="0.000769"/>
</if>
<arg>${switch}</arg>
<doc>Wraps the Read command so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:27.954622" elapsed="0.002512"/>
</kw>
<arg>Read Wrapper</arg>
<arg>${switch}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-20T23:19:27.953518" elapsed="0.003714"/>
</kw>
<var name="${cmd}">['/sbin/ifconfig -a | egrep \'^s\' | awk \'{print "sudo ovs-vsctl del-br",$1}\' | sh']</var>
<status status="PASS" start="2026-10-20T23:19:26.948295" elapsed="1.009003"/>
</iter>
<var>${cmd}</var>
<value>@{switch.initialization_cmds}</value>
<status status="PASS" start="2026-10-20T23:19:26.947904" elapsed="1.009499"/>
</for>
<if>
<branch type="IF" condition="&quot;${switch.initialization_type}&quot; == &quot;reboot&quot;">
<kw name="Wait For Switch Reboot" owner="SwitchUtils">
<arg>${switch}</arg>
<doc>If a switch has been set to reboot, it may take some time.  This keyword will first
make sure the switch has gone down (10 pings over 10 seconds should not see
a 100% success, although it may respond for a short time after the reload is
issued).  Then a poll is done with a single ping request every 5s until a success
is found, at which point it is assumed the switch is up and ready.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:27.958167" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:27.957538" elapsed="0.000753"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:27.957502" elapsed="0.000872"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.initialization_type}&quot; == &quot;reboot&quot;">
<kw name="Connect To Switch" owner="SwitchUtils">
<arg>${switch}</arg>
<doc>Will Open a connection to the switch, which will set the switch.connection_index.
For each switch.connection_configs string, a write bare will be executed on the
switch connection.  The write bare is done becuase some switch consoles require
extra input (CR/LF, etc.) that are needed.  The connection_configs strings should
be sufficient to put the switch console in to a usuable state so that further
interactions with the switch can be used with the robot keyword "Execute
Command"</doc>
<status status="NOT RUN" start="2026-10-20T23:19:27.959175" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:27.958488" elapsed="0.000811"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:27.958456" elapsed="0.000923"/>
</if>
<arg>${test_switch}</arg>
<doc>Will connect and execute all switch.initialization_cmds on the given switch.
In some cases, this may be a reboot.  If so, the switch.initialization_type can
be set to "reboot" and further logic is invoked to wait for the reboot to complete
and a reconnect to the switch is made.</doc>
<status status="PASS" start="2026-10-20T23:19:25.564201" elapsed="2.395279"/>
</kw>
<kw name="Configure OpenFlow" owner="SwitchUtils">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:27.961256" level="INFO">Applying configs to configure openflow on the given switch.</msg>
<arg>Applying configs to configure openflow on the given switch.</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:27.960751" elapsed="0.000630"/>
</kw>
<kw name="Configure Connection Index And Prompt Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${switch.connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-10-20T23:19:27.962929" elapsed="0.000369"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:27.962379" elapsed="0.001024"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:27.962339" elapsed="0.001117"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Set Client Configuration" owner="SSHLibrary">
<arg>prompt=${switch.mgmt_prompt}</arg>
<arg>timeout=5s</arg>
<doc>Update the `configuration` of the current connection.</doc>
<status status="PASS" start="2026-10-20T23:19:27.964128" elapsed="0.000598"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:27.963566" elapsed="0.001238"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:27.963533" elapsed="0.001420"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Switch Connection" owner="Telnet">
<arg>${switch.connection_index}</arg>
<doc>Switches between active connections using an index or an alias.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:27.965687" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:27.965108" elapsed="0.000690"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:27.965073" elapsed="0.000773"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Set Prompt" owner="Telnet">
<arg>${switch.mgmt_prompt}</arg>
<arg>True</arg>
<doc>Sets the prompt used by the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:27.966533" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:27.965955" elapsed="0.000695"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:27.965924" elapsed="0.000774"/>
</if>
<arg>${switch}</arg>
<doc>when using multiple switch connections (e.g. more than one switch device) this keyword will switch the current connection index and prompt so that the following
Read or Write actions happen on the correct device.</doc>
<status status="PASS" start="2026-10-20T23:19:27.961982" elapsed="0.004812"/>
</kw>
<kw name="Iterate Switch Commands From List" owner="SwitchUtils">
<kw name="Configure Connection Index And Prompt Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${switch.connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-10-20T23:19:27.972104" elapsed="0.000369"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:27.971539" elapsed="0.001012"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:27.971503" elapsed="0.001098"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Set Client Configuration" owner="SSHLibrary">
<arg>prompt=${switch.mgmt_prompt}</arg>
<arg>timeout=5s</arg>
<doc>Update the `configuration` of the current connection.</doc>
<status status="PASS" start="2026-10-20T23:19:27.973273" elapsed="0.000573"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:27.972710" elapsed="0.001214"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:27.972678" elapsed="0.001296"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Switch Connection" owner="Telnet">
<arg>${switch.connection_index}</arg>
<doc>Switches between active connections using an index or an alias.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:27.974682" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:27.974113" elapsed="0.000681"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:27.974080" elapsed="0.000761"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Set Prompt" owner="Telnet">
<arg>${switch.mgmt_prompt}</arg>
<arg>True</arg>
<doc>Sets the prompt used by the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:27.975521" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:27.974947" elapsed="0.000690"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:27.974916" elapsed="0.000770"/>
</if>
<arg>${switch}</arg>
<doc>when using multiple switch connections (e.g. more than one switch device) this keyword will switch the current connection index and prompt so that the following
Read or Write actions happen on the correct device.</doc>
<status status="PASS" start="2026-10-20T23:19:27.971172" elapsed="0.004608"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:27.977180" level="INFO">sudo ovs-vsctl add-br s1</msg>
<arg>${cmd}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:27.976652" elapsed="0.000624"/>
</kw>
<kw name="Read Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Read" owner="SSHLibrary">
<doc>Consumes and returns everything available on the server output.</doc>
<status status="PASS" start="2026-10-20T23:19:27.978709" elapsed="0.000232"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:27.978137" elapsed="0.000893"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:27.978101" elapsed="0.000981"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Read" owner="Telnet">
<doc>Reads everything that is currently available in the output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:27.979736" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:27.979192" elapsed="0.000648"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:27.979159" elapsed="0.000729"/>
</if>
<arg>${switch}</arg>
<doc>Wraps the Read command so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:27.977771" elapsed="0.002213"/>
</kw>
<kw name="Execute Command Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:19:27.981947" level="INFO">Executing command 'sudo ovs-vsctl add-br s1'.</msg>
<msg time="2026-10-20T23:19:28.015821" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-10-20T23:19:28.016033" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:19:27.981711" elapsed="0.034374"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:27.981058" elapsed="0.035103"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${output}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:28.016670" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:28.016215" elapsed="0.000573"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:27.980960" elapsed="0.035871"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Execute Command" owner="Telnet">
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes the given `command` and reads, logs, and returns resulting output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:28.017664" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:28.016943" elapsed="0.000844"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:28.018903" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>${output}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:28.018269" elapsed="0.000689"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:28.017837" elapsed="0.001220"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:28.016910" elapsed="0.002192"/>
</if>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-20T23:19:28.019180" elapsed="0.000069"/>
</return>
<arg>${switch}</arg>
<arg>${cmd}</arg>
<doc>Wraps the Execute Command keyword so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:27.980598" elapsed="0.038849"/>
</kw>
<var name="${cmd}">sudo ovs-vsctl add-br s1</var>
<status status="PASS" start="2026-10-20T23:19:27.976168" elapsed="0.043355"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:28.020753" level="INFO">sudo ovs-vsctl set bridge s1 protocols=OpenFlow13</msg>
<arg>${cmd}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:28.020196" elapsed="0.000721"/>
</kw>
<kw name="Read Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Read" owner="SSHLibrary">
<doc>Consumes and returns everything available on the server output.</doc>
<status status="PASS" start="2026-10-20T23:19:28.022389" elapsed="0.000236"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:28.021795" elapsed="0.000899"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:28.021759" elapsed="0.000987"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Read" owner="Telnet">
<doc>Reads everything that is currently available in the output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:28.023429" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:28.022856" elapsed="0.000682"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:28.022822" elapsed="0.000766"/>
</if>
<arg>${switch}</arg>
<doc>Wraps the Read command so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:28.021450" elapsed="0.002234"/>
</kw>
<kw name="Execute Command Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:19:28.025618" level="INFO">Executing command 'sudo ovs-vsctl set bridge s1 protocols=OpenFlow13'.</msg>
<msg time="2026-10-20T23:19:28.081202" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:19:28.081431" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:19:28.025369" elapsed="0.056121"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:28.024685" elapsed="0.056881"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${output}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:28.082060" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:28.081619" elapsed="0.000560"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:28.024647" elapsed="0.057576"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Execute Command" owner="Telnet">
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes the given `command` and reads, logs, and returns resulting output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:28.082909" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:28.082365" elapsed="0.000683"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:28.084138" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>${output}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:28.083520" elapsed="0.000673"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:28.083099" elapsed="0.001167"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:28.082302" elapsed="0.002036"/>
</if>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-20T23:19:28.084413" elapsed="0.000058"/>
</return>
<arg>${switch}</arg>
<arg>${cmd}</arg>
<doc>Wraps the Execute Command keyword so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:28.024252" elapsed="0.060383"/>
</kw>
<var name="${cmd}">sudo ovs-vsctl set bridge s1 protocols=OpenFlow13</var>
<status status="PASS" start="2026-10-20T23:19:28.019710" elapsed="0.064999"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:28.086159" level="INFO">sudo ovs-vsctl set-controller s1 tcp:10.30.170.223</msg>
<arg>${cmd}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:28.085642" elapsed="0.000610"/>
</kw>
<kw name="Read Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Read" owner="SSHLibrary">
<doc>Consumes and returns everything available on the server output.</doc>
<status status="PASS" start="2026-10-20T23:19:28.087685" elapsed="0.000230"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:28.087107" elapsed="0.000873"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:28.087068" elapsed="0.000987"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Read" owner="Telnet">
<doc>Reads everything that is currently available in the output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:28.088707" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:28.088164" elapsed="0.000647"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:28.088132" elapsed="0.000728"/>
</if>
<arg>${switch}</arg>
<doc>Wraps the Read command so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:28.086742" elapsed="0.002212"/>
</kw>
<kw name="Execute Command Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:19:28.090836" level="INFO">Executing command 'sudo ovs-vsctl set-controller s1 tcp:10.30.170.223'.</msg>
<msg time="2026-10-20T23:19:28.149139" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:19:28.149378" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:19:28.090608" elapsed="0.058825"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:28.089946" elapsed="0.059568"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${output}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:28.150019" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:28.149567" elapsed="0.000572"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:28.089910" elapsed="0.060273"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Execute Command" owner="Telnet">
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes the given `command` and reads, logs, and returns resulting output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:28.150877" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:28.150298" elapsed="0.000718"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:28.152114" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>${output}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:28.151492" elapsed="0.000678"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:28.151070" elapsed="0.001173"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:28.150264" elapsed="0.002021"/>
</if>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-20T23:19:28.152390" elapsed="0.000058"/>
</return>
<arg>${switch}</arg>
<arg>${cmd}</arg>
<doc>Wraps the Execute Command keyword so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:28.089547" elapsed="0.063065"/>
</kw>
<var name="${cmd}">sudo ovs-vsctl set-controller s1 tcp:10.30.170.223</var>
<status status="PASS" start="2026-10-20T23:19:28.084891" elapsed="0.067798"/>
</iter>
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:28.153971" level="INFO">sudo ifconfig s1 up</msg>
<arg>${cmd}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:28.153466" elapsed="0.000624"/>
</kw>
<kw name="Read Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Read" owner="SSHLibrary">
<doc>Consumes and returns everything available on the server output.</doc>
<status status="PASS" start="2026-10-20T23:19:28.155529" elapsed="0.000232"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:28.154931" elapsed="0.000898"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:28.154895" elapsed="0.000985"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Read" owner="Telnet">
<doc>Reads everything that is currently available in the output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:28.156552" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:28.155987" elapsed="0.000672"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:28.155955" elapsed="0.000754"/>
</if>
<arg>${switch}</arg>
<doc>Wraps the Read command so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:28.154591" elapsed="0.002212"/>
</kw>
<kw name="Execute Command Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:19:28.158730" level="INFO">Executing command 'sudo ifconfig s1 up'.</msg>
<msg time="2026-10-20T23:19:28.207178" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:19:28.207465" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:19:28.158495" elapsed="0.049026"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:28.157820" elapsed="0.049793"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${output}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:28.208191" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:28.207675" elapsed="0.000667"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:28.157784" elapsed="0.050605"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Execute Command" owner="Telnet">
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes the given `command` and reads, logs, and returns resulting output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:28.209134" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:28.208512" elapsed="0.000743"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:28.210445" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>${output}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:28.209729" elapsed="0.000770"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:28.209304" elapsed="0.001269"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:28.208476" elapsed="0.002140"/>
</if>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-20T23:19:28.210693" elapsed="0.000063"/>
</return>
<arg>${switch}</arg>
<arg>${cmd}</arg>
<doc>Wraps the Execute Command keyword so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:28.157420" elapsed="0.053507"/>
</kw>
<var name="${cmd}">sudo ifconfig s1 up</var>
<status status="PASS" start="2026-10-20T23:19:28.152953" elapsed="0.058075"/>
</iter>
<var>${cmd}</var>
<value>@{cmd_list}</value>
<status status="PASS" start="2026-10-20T23:19:27.975882" elapsed="0.235212"/>
</for>
<arg>${switch}</arg>
<arg>${switch.base_openflow_config}</arg>
<doc>Each string in the @{cmd_list} argument is executed on the switch.connection_index.</doc>
<status status="PASS" start="2026-10-20T23:19:27.970135" elapsed="0.241073"/>
</kw>
<kw name="Read Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Read" owner="SSHLibrary">
<doc>Consumes and returns everything available on the server output.</doc>
<status status="PASS" start="2026-10-20T23:19:28.212731" elapsed="0.000242"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:28.212148" elapsed="0.000921"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:28.212109" elapsed="0.001011"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Read" owner="Telnet">
<doc>Reads everything that is currently available in the output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:28.213771" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:28.213230" elapsed="0.000647"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:28.213198" elapsed="0.000727"/>
</if>
<arg>${switch}</arg>
<doc>Wraps the Read command so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:28.211750" elapsed="0.002290"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Validate Switch Output" owner="SwitchUtils">
<kw name="Configure Connection Index And Prompt Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${switch.connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-10-20T23:19:28.224088" elapsed="0.000384"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:28.223512" elapsed="0.001041"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:28.223474" elapsed="0.001131"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Set Client Configuration" owner="SSHLibrary">
<arg>prompt=${switch.mgmt_prompt}</arg>
<arg>timeout=5s</arg>
<doc>Update the `configuration` of the current connection.</doc>
<status status="PASS" start="2026-10-20T23:19:28.225287" elapsed="0.000601"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:28.224717" elapsed="0.001251"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:28.224684" elapsed="0.001360"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Switch Connection" owner="Telnet">
<arg>${switch.connection_index}</arg>
<doc>Switches between active connections using an index or an alias.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:28.226736" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:28.226159" elapsed="0.000689"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:28.226126" elapsed="0.000771"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Set Prompt" owner="Telnet">
<arg>${switch.mgmt_prompt}</arg>
<arg>True</arg>
<doc>Sets the prompt used by the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:28.227594" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:28.227030" elapsed="0.000681"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:28.226974" elapsed="0.000785"/>
</if>
<arg>${switch}</arg>
<doc>when using multiple switch connections (e.g. more than one switch device) this keyword will switch the current connection index and prompt so that the following
Read or Write actions happen on the correct device.</doc>
<status status="PASS" start="2026-10-20T23:19:28.223137" elapsed="0.004717"/>
</kw>
<kw name="Read Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Read" owner="SSHLibrary">
<doc>Consumes and returns everything available on the server output.</doc>
<status status="PASS" start="2026-10-20T23:19:28.229417" elapsed="0.000236"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:28.228824" elapsed="0.000898"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:28.228786" elapsed="0.000987"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Read" owner="Telnet">
<doc>Reads everything that is currently available in the output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:28.230449" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:28.229885" elapsed="0.000672"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:28.229852" elapsed="0.000754"/>
</if>
<arg>${switch}</arg>
<doc>Wraps the Read command so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:28.228477" elapsed="0.002224"/>
</kw>
<kw name="Execute Command Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:19:28.232590" level="INFO">Executing command '/sbin/ifconfig'.</msg>
<msg time="2026-10-20T23:19:28.256437" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:19:28.256631" level="INFO">${output} = ens3: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1458
        inet 10.30.170.219  netmask 255.255.254.0  broadcast 10.30.171.255
        inet6 fe80::f816:3eff:feeb:7ce2  prefixlen 64  scopeid 0x2...</msg>
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:19:28.232355" elapsed="0.024335"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:28.231699" elapsed="0.025069"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${output}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:28.257264" elapsed="0.000081"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:28.256821" elapsed="0.000600"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:28.231663" elapsed="0.025800"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Execute Command" owner="Telnet">
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes the given `command` and reads, logs, and returns resulting output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:28.258139" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:28.257578" elapsed="0.000678"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:28.259370" level="INFO">${output} = ens3: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1458
        inet 10.30.170.219  netmask 255.255.254.0  broadcast 10.30.171.255
        inet6 fe80::f816:3eff:feeb:7ce2  prefixlen 64  scopeid 0x2...</msg>
<var>${output}</var>
<arg>${output}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:28.258725" elapsed="0.000708"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:28.258304" elapsed="0.001203"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:28.257545" elapsed="0.002004"/>
</if>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-20T23:19:28.259621" elapsed="0.000057"/>
</return>
<msg time="2026-10-20T23:19:28.259893" level="INFO">${tmp} = ens3: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1458
        inet 10.30.170.219  netmask 255.255.254.0  broadcast 10.30.171.255
        inet6 fe80::f816:3eff:feeb:7ce2  prefixlen 64  scopeid 0x2...</msg>
<var>${tmp}</var>
<arg>${switch}</arg>
<arg>/sbin/ifconfig</arg>
<doc>Wraps the Execute Command keyword so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:28.231290" elapsed="0.028660"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:28.261015" level="INFO">ens3: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1458
        inet 10.30.170.219  netmask 255.255.254.0  broadcast 10.30.171.255
        inet6 fe80::f816:3eff:feeb:7ce2  prefixlen 64  scopeid 0x20&lt;link&gt;
        ether fa:16:3e:eb:7c:e2  txqueuelen 1000  (Ethernet)
        RX packets 12831  bytes 21159659 (21.1 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 8912  bytes 4106806 (4.1 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73&lt;UP,LOOPBACK,RUNNING&gt;  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10&lt;host&gt;
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 310  bytes 27934 (27.9 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 310  bytes 27934 (27.9 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

s1: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1500
        inet6 fe80::e007:e3ff:fe56:6d42  prefixlen 64  scopeid 0x20&lt;link&gt;
        ether e2:07:e3:56:6d:42  txqueuelen 1000  (Ethernet)
        RX packets 4  bytes 440 (440.0 B)
        RX errors 0  dropped 4  overruns 0  frame 0
        TX packets 8  bytes 656 (656.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0</msg>
<arg>${tmp}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:28.260501" elapsed="0.000637"/>
</kw>
<kw name="Execute Command Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:19:28.263058" level="INFO">Executing command 'sudo ovs-vsctl show'.</msg>
<msg time="2026-10-20T23:19:28.314661" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:19:28.314853" level="INFO">${output} = ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_versio...</msg>
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:19:28.262812" elapsed="0.052094"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:28.262160" elapsed="0.052823"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${output}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:28.315507" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:28.315060" elapsed="0.000564"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:28.262123" elapsed="0.053542"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Execute Command" owner="Telnet">
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes the given `command` and reads, logs, and returns resulting output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:28.316378" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:28.315777" elapsed="0.000722"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:28.317594" level="INFO">${output} = ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_versio...</msg>
<var>${output}</var>
<arg>${output}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:28.316942" elapsed="0.000784"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:28.316549" elapsed="0.001256"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:28.315745" elapsed="0.002104"/>
</if>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-20T23:19:28.317922" elapsed="0.000059"/>
</return>
<msg time="2026-10-20T23:19:28.318229" level="INFO">${output} = ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_versio...</msg>
<var>${output}</var>
<arg>${switch}</arg>
<arg>${cmd}</arg>
<doc>Wraps the Execute Command keyword so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:28.261727" elapsed="0.056556"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:28.319366" level="INFO">ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        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-10-20T23:19:28.318813" elapsed="0.000649"/>
</kw>
<for flavor="IN">
<iter>
<if>
<branch type="IF" condition="&quot;${should_exist}&quot; == &quot;true&quot;">
<kw name="Should Match Regexp" owner="BuiltIn">
<msg time="2026-10-20T23:19:28.321440" level="FAIL">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</msg>
<arg>${output}</arg>
<arg>${str}</arg>
<doc>Fails if the `string` does not match the regular expression `pattern`.</doc>
<status status="FAIL" start="2026-10-20T23:19:28.320670" elapsed="0.000925">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</status>
</kw>
<status status="FAIL" start="2026-10-20T23:19:28.320053" elapsed="0.001697">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</status>
</branch>
<status status="FAIL" start="2026-10-20T23:19:28.320019" elapsed="0.001799">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</status>
</if>
<if>
<branch type="IF" condition="&quot;${should_exist}&quot; == &quot;false&quot;">
<kw name="Should Not Match Regexp" owner="BuiltIn">
<arg>${output}</arg>
<arg>${str}</arg>
<doc>Fails if the `string` matches the regular expression `pattern`.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:28.322746" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:28.322299" elapsed="0.000567"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:19:28.321923" elapsed="0.000992"/>
</if>
<var name="${str}">is_connected: true</var>
<status status="FAIL" start="2026-10-20T23:19:28.319938" elapsed="0.003097">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</status>
</iter>
<var>${str}</var>
<value>@{validations}</value>
<status status="FAIL" start="2026-10-20T23:19:28.319569" elapsed="0.003593">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</status>
</for>
<arg>${switch}</arg>
<arg>${switch.openflow_validation_cmd}</arg>
<arg>${switch.openflow_enable_validations}</arg>
<doc>A generic keyword that will execute one command on the switch, and check for each string in the @{validations} argument.  There is a boolean flag ${should_exist} that can be used to check that the validations are or are NOT in the output of the command executed.</doc>
<status status="FAIL" start="2026-10-20T23:19:28.221862" elapsed="0.101540">'ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
        Port s1
            Interface s1
                type: internal
    ovs_version: "2.17.11"' does not match 'is_connected: true'</status>
</kw>
<kw name="Validate Switch Output" owner="SwitchUtils">
<kw name="Configure Connection Index And Prompt Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${switch.connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-10-20T23:19:29.333092" elapsed="0.000401"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:29.332466" elapsed="0.001117"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:29.332415" elapsed="0.001221"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Set Client Configuration" owner="SSHLibrary">
<arg>prompt=${switch.mgmt_prompt}</arg>
<arg>timeout=5s</arg>
<doc>Update the `configuration` of the current connection.</doc>
<status status="PASS" start="2026-10-20T23:19:29.334348" elapsed="0.000641"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:29.333749" elapsed="0.001353"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:29.333715" elapsed="0.001445"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Switch Connection" owner="Telnet">
<arg>${switch.connection_index}</arg>
<doc>Switches between active connections using an index or an alias.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:29.335919" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:29.335281" elapsed="0.000785"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:29.335245" elapsed="0.000875"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Set Prompt" owner="Telnet">
<arg>${switch.mgmt_prompt}</arg>
<arg>True</arg>
<doc>Sets the prompt used by the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:29.336832" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:29.336238" elapsed="0.000709"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:29.336203" elapsed="0.000794"/>
</if>
<arg>${switch}</arg>
<doc>when using multiple switch connections (e.g. more than one switch device) this keyword will switch the current connection index and prompt so that the following
Read or Write actions happen on the correct device.</doc>
<status status="PASS" start="2026-10-20T23:19:29.332019" elapsed="0.005095"/>
</kw>
<kw name="Read Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Read" owner="SSHLibrary">
<doc>Consumes and returns everything available on the server output.</doc>
<status status="PASS" start="2026-10-20T23:19:29.338559" elapsed="0.000263"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:29.337951" elapsed="0.000941"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:29.337916" elapsed="0.001026"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Read" owner="Telnet">
<doc>Reads everything that is currently available in the output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:29.339710" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:29.339074" elapsed="0.000745"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:29.339020" elapsed="0.000850"/>
</if>
<arg>${switch}</arg>
<doc>Wraps the Read command so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:29.337611" elapsed="0.002355"/>
</kw>
<kw name="Execute Command Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:19:29.341868" level="INFO">Executing command '/sbin/ifconfig'.</msg>
<msg time="2026-10-20T23:19:29.354739" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:19:29.354949" level="INFO">${output} = ens3: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1458
        inet 10.30.170.219  netmask 255.255.254.0  broadcast 10.30.171.255
        inet6 fe80::f816:3eff:feeb:7ce2  prefixlen 64  scopeid 0x2...</msg>
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:19:29.341631" elapsed="0.013382"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:29.340977" elapsed="0.014154"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${output}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:29.355713" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:29.355191" elapsed="0.000643"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:29.340942" elapsed="0.014936"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Execute Command" owner="Telnet">
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes the given `command` and reads, logs, and returns resulting output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:29.356625" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:29.355991" elapsed="0.000766"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:29.357958" level="INFO">${output} = ens3: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1458
        inet 10.30.170.219  netmask 255.255.254.0  broadcast 10.30.171.255
        inet6 fe80::f816:3eff:feeb:7ce2  prefixlen 64  scopeid 0x2...</msg>
<var>${output}</var>
<arg>${output}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:29.357261" elapsed="0.000757"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:29.356811" elapsed="0.001308"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:29.355958" elapsed="0.002205"/>
</if>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-20T23:19:29.358237" elapsed="0.000064"/>
</return>
<msg time="2026-10-20T23:19:29.358553" level="INFO">${tmp} = ens3: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1458
        inet 10.30.170.219  netmask 255.255.254.0  broadcast 10.30.171.255
        inet6 fe80::f816:3eff:feeb:7ce2  prefixlen 64  scopeid 0x2...</msg>
<var>${tmp}</var>
<arg>${switch}</arg>
<arg>/sbin/ifconfig</arg>
<doc>Wraps the Execute Command keyword so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:29.340599" elapsed="0.018010"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:29.359711" level="INFO">ens3: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1458
        inet 10.30.170.219  netmask 255.255.254.0  broadcast 10.30.171.255
        inet6 fe80::f816:3eff:feeb:7ce2  prefixlen 64  scopeid 0x20&lt;link&gt;
        ether fa:16:3e:eb:7c:e2  txqueuelen 1000  (Ethernet)
        RX packets 12840  bytes 21160765 (21.1 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 8925  bytes 4109984 (4.1 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73&lt;UP,LOOPBACK,RUNNING&gt;  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10&lt;host&gt;
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 310  bytes 27934 (27.9 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 310  bytes 27934 (27.9 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

s1: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1500
        inet6 fe80::e007:e3ff:fe56:6d42  prefixlen 64  scopeid 0x20&lt;link&gt;
        ether e2:07:e3:56:6d:42  txqueuelen 1000  (Ethernet)
        RX packets 4  bytes 440 (440.0 B)
        RX errors 0  dropped 4  overruns 0  frame 0
        TX packets 8  bytes 656 (656.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0</msg>
<arg>${tmp}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:29.359135" elapsed="0.000705"/>
</kw>
<kw name="Execute Command Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:19:29.361891" level="INFO">Executing command 'sudo ovs-vsctl show'.</msg>
<msg time="2026-10-20T23:19:29.418191" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:19:29.418440" level="INFO">${output} = ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
            is_connected: true
        Port s1
            Interface s1
              ...</msg>
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:19:29.361665" elapsed="0.056830"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:29.360990" elapsed="0.057589"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${output}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:29.419096" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:29.418634" elapsed="0.000580"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:29.360954" elapsed="0.058303"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Execute Command" owner="Telnet">
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes the given `command` and reads, logs, and returns resulting output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:29.420018" elapsed="0.000072"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:29.419402" elapsed="0.000766"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:29.421399" level="INFO">${output} = ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
            is_connected: true
        Port s1
            Interface s1
              ...</msg>
<var>${output}</var>
<arg>${output}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:29.420689" elapsed="0.000768"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:29.420222" elapsed="0.001307"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:29.419367" elapsed="0.002205"/>
</if>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-20T23:19:29.421647" elapsed="0.000059"/>
</return>
<msg time="2026-10-20T23:19:29.421925" level="INFO">${output} = ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
            is_connected: true
        Port s1
            Interface s1
              ...</msg>
<var>${output}</var>
<arg>${switch}</arg>
<arg>${cmd}</arg>
<doc>Wraps the Execute Command keyword so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:29.360583" elapsed="0.061547"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:29.423190" level="INFO">ef5e6311-6bc3-45eb-bec5-977d25c19a20
    Manager "ptcp:6644"
    Bridge s1
        Controller "tcp:10.30.170.223"
            is_connected: true
        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-10-20T23:19:29.422667" elapsed="0.000617"/>
</kw>
<for flavor="IN">
<iter>
<if>
<branch type="IF" condition="&quot;${should_exist}&quot; == &quot;true&quot;">
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${output}</arg>
<arg>${str}</arg>
<doc>Fails if the `string` does not match the regular expression `pattern`.</doc>
<status status="PASS" start="2026-10-20T23:19:29.424528" elapsed="0.001053"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:29.423893" elapsed="0.001771"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:29.423862" elapsed="0.001855"/>
</if>
<if>
<branch type="IF" condition="&quot;${should_exist}&quot; == &quot;false&quot;">
<kw name="Should Not Match Regexp" owner="BuiltIn">
<arg>${output}</arg>
<arg>${str}</arg>
<doc>Fails if the `string` matches the regular expression `pattern`.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:29.426391" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:29.425832" elapsed="0.000680"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:29.425798" elapsed="0.000764"/>
</if>
<var name="${str}">is_connected: true</var>
<status status="PASS" start="2026-10-20T23:19:29.423800" elapsed="0.002810"/>
</iter>
<var>${str}</var>
<value>@{validations}</value>
<status status="PASS" start="2026-10-20T23:19:29.423424" elapsed="0.003248"/>
</for>
<arg>${switch}</arg>
<arg>${switch.openflow_validation_cmd}</arg>
<arg>${switch.openflow_enable_validations}</arg>
<doc>A generic keyword that will execute one command on the switch, and check for each string in the @{validations} argument.  There is a boolean flag ${should_exist} that can be used to check that the validations are or are NOT in the output of the command executed.</doc>
<status status="PASS" start="2026-10-20T23:19:29.330461" elapsed="0.096321"/>
</kw>
<arg>10s</arg>
<arg>1s</arg>
<arg>Validate Switch Output</arg>
<arg>${switch}</arg>
<arg>${switch.openflow_validation_cmd}</arg>
<arg>${switch.openflow_enable_validations}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-10-20T23:19:28.214567" elapsed="1.212328"/>
</kw>
<kw name="Read Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Read" owner="SSHLibrary">
<doc>Consumes and returns everything available on the server output.</doc>
<status status="PASS" start="2026-10-20T23:19:29.428371" elapsed="0.000249"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:29.427785" elapsed="0.000911"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:29.427749" elapsed="0.001006"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Read" owner="Telnet">
<doc>Reads everything that is currently available in the output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:29.429426" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:29.428871" elapsed="0.000660"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:29.428838" elapsed="0.000742"/>
</if>
<arg>${switch}</arg>
<doc>Wraps the Read command so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:29.427438" elapsed="0.002236"/>
</kw>
<arg>${test_switch}</arg>
<doc>The commands neccessary to configure openflow on the given switch object should exist in the switch.base_openflow_config attribute.  Also, the commands/logic to verify that openflow is working are checked in this keyword and come
from switch.openflow_validation_cmd output where the validation strings are
stored in switch.openflow_enable_validations</doc>
<status status="PASS" start="2026-10-20T23:19:27.959979" elapsed="1.469802"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:19:29.430863" level="INFO">Creating Session using : alias=session, url=http://10.30.170.223:8181, headers={'Content-Type': 'application/xml'},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x756aa70ea510&gt;, timeout=None, proxies=None, verify=False,                     debug=0 </msg>
<arg>session</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>headers=${HEADERS_XML}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-10-20T23:19:29.430259" elapsed="0.000938"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:24.870024" elapsed="4.561337"/>
</kw>
<test id="s1-s4-s2-t1" name="INPORT" line="56">
<kw name="Create And Remove Flow">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:19:29.435076" level="INFO">${ethernet_match_dict} = {'type': '0x800', 'destination': 'ff:ff:ff:ff:ff:ff', 'source': '00:ab:cd:ef:01:23'}</msg>
<var>${ethernet_match_dict}</var>
<arg>type=${eth_type}</arg>
<arg>destination=${eth_dst}</arg>
<arg>source=${eth_src}</arg>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:19:29.434045" elapsed="0.001094"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:19:29.436600" level="INFO">${ipv4_match_dict} = {'source': '11.3.0.0/16', 'destination': '99.0.0.0/8'}</msg>
<var>${ipv4_match_dict}</var>
<arg>source=${ipv4_src}</arg>
<arg>destination=${ipv4_dst}</arg>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:19:29.435691" elapsed="0.000968"/>
</kw>
<kw name="Create Inventory Flow" owner="FlowLib">
<kw name="Make Inventory Flow" owner="FlowLib">
<msg time="2026-10-20T23:19:29.438104" level="INFO">${flow} = &lt;FlowLib.Flow object at 0x756aa57a6450&gt;</msg>
<var>${flow}</var>
<doc>Robot Keyword to create and return an instance of the Flow
class.</doc>
<status status="PASS" start="2026-10-20T23:19:29.437810" elapsed="0.000354"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:29.438258" elapsed="0.000091"/>
</return>
<msg time="2026-10-20T23:19:29.438607" level="INFO">${flow} = &lt;FlowLib.Flow object at 0x756aa57a6450&gt;</msg>
<var>${flow}</var>
<doc>Calls FlowLib.Make_Inventory_Flow function and initializes and sanitizes
the basic flow elements that can be given to flow:inventory</doc>
<status status="PASS" start="2026-10-20T23:19:29.437081" elapsed="0.001581"/>
</kw>
<kw name="Set &quot;${flow}&quot; &quot;table_id&quot; With &quot;${table_id}&quot;" owner="FlowLib" source_name="Set &quot;${flow}&quot; &quot;${property}&quot; With &quot;${property_val}&quot;">
<if>
<branch type="IF" condition="&quot;table_id&quot; != &quot;${property}&quot; and &quot;cookie_mask&quot; != &quot;${property}&quot;">
<kw name="Replace String" owner="String">
<var>${property}</var>
<arg>${property}</arg>
<arg>_</arg>
<arg>-</arg>
<doc>Replaces `search_for` in the given `string` with `replace_with`.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:29.443626" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:29.442942" elapsed="0.000829"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:29.444932" level="INFO">${property} = table_id</msg>
<var>${property}</var>
<arg>${property}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:29.444270" elapsed="0.000720"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:29.443827" elapsed="0.001335"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:29.442905" elapsed="0.002312"/>
</if>
<kw name="Remove Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:29.451902" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa57f69d0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:29.450571" elapsed="0.001389"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Remove Elements" owner="XML">
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Removes all elements matching `xpath` from the `source` structure.</doc>
<status status="PASS" start="2026-10-20T23:19:29.453349" elapsed="0.000567"/>
</kw>
<arg>Remove Elements</arg>
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-20T23:19:29.452458" elapsed="0.001594"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:29.455337" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:29.454500" elapsed="0.000898"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:29.455792" elapsed="0.000362"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:29.456263" elapsed="0.000094"/>
</return>
<arg>${flow}</arg>
<arg>${property}</arg>
<doc>Removes the element at the given ${element_xpath} within the given &lt;FlowLib.Flow object at 0x756aa57a6450&gt;
object. The &lt;FlowLib.Flow object at 0x756aa57a6450&gt; object's xml representation will be updated to reflect this removal.</doc>
<status status="PASS" start="2026-10-20T23:19:29.449678" elapsed="0.006877"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:29.471600" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa70e5e40&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:29.471093" elapsed="0.000546"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:29.471944" elapsed="0.000575"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:29.473244" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:29.472800" elapsed="0.000482"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:29.473554" elapsed="0.000171"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:29.474473" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:29.474074" elapsed="0.000460"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:29.474590" elapsed="0.000039"/>
</return>
<arg>${flow}</arg>
<arg>${property}</arg>
<arg>${property_val}</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa57a6450&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:29.470439" elapsed="0.004294"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>${property}</arg>
<arg>${property_val}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:29.474988" elapsed="0.000208"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:29.475260" elapsed="0.000035"/>
</return>
<doc>Embedded variables to make higher level keywords more readable.
There are some cases where the python attribute uses an underscore,
but a hyphen needs to be used. This seems inconsistent, and may need
to be looked at from the openflow plugin perspective.</doc>
<status status="PASS" start="2026-10-20T23:19:29.442369" elapsed="0.033050"/>
</kw>
<kw name="Set &quot;${flow}&quot; &quot;id&quot; With &quot;${flow_id}&quot;" owner="FlowLib" source_name="Set &quot;${flow}&quot; &quot;${property}&quot; With &quot;${property_val}&quot;">
<if>
<branch type="IF" condition="&quot;table_id&quot; != &quot;${property}&quot; and &quot;cookie_mask&quot; != &quot;${property}&quot;">
<kw name="Replace String" owner="String">
<msg time="2026-10-20T23:19:29.478634" level="INFO">${property} = id</msg>
<var>${property}</var>
<arg>${property}</arg>
<arg>_</arg>
<arg>-</arg>
<doc>Replaces `search_for` in the given `string` with `replace_with`.</doc>
<status status="PASS" start="2026-10-20T23:19:29.478369" elapsed="0.000300"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:29.477954" elapsed="0.000767"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${property}</var>
<arg>${property}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:29.479005" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:29.478753" elapsed="0.000342"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:29.477929" elapsed="0.001193"/>
</if>
<kw name="Remove Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:29.482288" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa70e6d90&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:29.481805" elapsed="0.000540"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Remove Elements" owner="XML">
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Removes all elements matching `xpath` from the `source` structure.</doc>
<status status="PASS" start="2026-10-20T23:19:29.483166" elapsed="0.000404"/>
</kw>
<arg>Remove Elements</arg>
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-20T23:19:29.482623" elapsed="0.001034"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:29.484199" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:29.483900" elapsed="0.000326"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:29.484452" elapsed="0.000124"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:29.484622" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>${property}</arg>
<doc>Removes the element at the given ${element_xpath} within the given &lt;FlowLib.Flow object at 0x756aa57a6450&gt;
object. The &lt;FlowLib.Flow object at 0x756aa57a6450&gt; object's xml representation will be updated to reflect this removal.</doc>
<status status="PASS" start="2026-10-20T23:19:29.481207" elapsed="0.003515"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:29.493553" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4d1d5d0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:29.493198" elapsed="0.000381"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:29.493780" elapsed="0.000350"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:29.494638" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;161&lt;/id&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:29.494342" elapsed="0.000325"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:29.494843" elapsed="0.000122"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:29.495483" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;161&lt;/id&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:29.495200" elapsed="0.000328"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:29.495567" elapsed="0.000028"/>
</return>
<arg>${flow}</arg>
<arg>${property}</arg>
<arg>${property_val}</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa57a6450&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:29.492745" elapsed="0.002924"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>${property}</arg>
<arg>${property_val}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:29.495850" elapsed="0.000131"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:29.496026" elapsed="0.000036"/>
</return>
<doc>Embedded variables to make higher level keywords more readable.
There are some cases where the python attribute uses an underscore,
but a hyphen needs to be used. This seems inconsistent, and may need
to be looked at from the openflow plugin perspective.</doc>
<status status="PASS" start="2026-10-20T23:19:29.477600" elapsed="0.018533"/>
</kw>
<kw name="Set &quot;${flow}&quot; &quot;priority&quot; With &quot;${priority}&quot;" owner="FlowLib" source_name="Set &quot;${flow}&quot; &quot;${property}&quot; With &quot;${property_val}&quot;">
<if>
<branch type="IF" condition="&quot;table_id&quot; != &quot;${property}&quot; and &quot;cookie_mask&quot; != &quot;${property}&quot;">
<kw name="Replace String" owner="String">
<msg time="2026-10-20T23:19:29.498569" level="INFO">${property} = priority</msg>
<var>${property}</var>
<arg>${property}</arg>
<arg>_</arg>
<arg>-</arg>
<doc>Replaces `search_for` in the given `string` with `replace_with`.</doc>
<status status="PASS" start="2026-10-20T23:19:29.498385" elapsed="0.000209"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:29.498101" elapsed="0.000532"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${property}</var>
<arg>${property}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:29.498841" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:29.498656" elapsed="0.000236"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:29.498083" elapsed="0.000828"/>
</if>
<kw name="Remove Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:29.501078" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4d5f600&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:29.500736" elapsed="0.000369"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Remove Elements" owner="XML">
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Removes all elements matching `xpath` from the `source` structure.</doc>
<status status="PASS" start="2026-10-20T23:19:29.501693" elapsed="0.000249"/>
</kw>
<arg>Remove Elements</arg>
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-20T23:19:29.501316" elapsed="0.000676"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:29.502495" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;161&lt;/id&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:29.502194" elapsed="0.000328"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:29.502698" elapsed="0.000121"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:29.502864" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>${property}</arg>
<doc>Removes the element at the given ${element_xpath} within the given &lt;FlowLib.Flow object at 0x756aa57a6450&gt;
object. The &lt;FlowLib.Flow object at 0x756aa57a6450&gt; object's xml representation will be updated to reflect this removal.</doc>
<status status="PASS" start="2026-10-20T23:19:29.500360" elapsed="0.002603"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:29.511800" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa70e7510&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:29.511463" elapsed="0.000363"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:29.512043" elapsed="0.000429"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:29.512965" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;161&lt;/id&gt;&lt;priority&gt;1&lt;/priority&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:29.512671" elapsed="0.000322"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:29.513182" elapsed="0.000146"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:29.513825" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;161&lt;/id&gt;&lt;priority&gt;1&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:29.513559" elapsed="0.000310"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:29.513909" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>${property}</arg>
<arg>${property_val}</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa57a6450&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:29.510995" elapsed="0.003014"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>${property}</arg>
<arg>${property_val}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:29.514206" elapsed="0.000147"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:29.514399" elapsed="0.000026"/>
</return>
<doc>Embedded variables to make higher level keywords more readable.
There are some cases where the python attribute uses an underscore,
but a hyphen needs to be used. This seems inconsistent, and may need
to be looked at from the openflow plugin perspective.</doc>
<status status="PASS" start="2026-10-20T23:19:29.497833" elapsed="0.016668"/>
</kw>
<kw name="Clear Flow Actions" owner="FlowLib">
<kw name="Remove Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:29.516965" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa5723ab0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:29.516639" elapsed="0.000352"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Remove Elements" owner="XML">
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Removes all elements matching `xpath` from the `source` structure.</doc>
<status status="PASS" start="2026-10-20T23:19:29.517593" elapsed="0.000279"/>
</kw>
<arg>Remove Elements</arg>
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-20T23:19:29.517200" elapsed="0.000721"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:29.518467" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;161&lt;/id&gt;&lt;priority&gt;1&lt;/priority&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:29.518120" elapsed="0.000376"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:29.518672" elapsed="0.000121"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:29.518838" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>instructions/instruction</arg>
<doc>Removes the element at the given ${element_xpath} within the given &lt;FlowLib.Flow object at 0x756aa57a6450&gt;
object. The &lt;FlowLib.Flow object at 0x756aa57a6450&gt; object's xml representation will be updated to reflect this removal.</doc>
<status status="PASS" start="2026-10-20T23:19:29.516258" elapsed="0.002679"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:29.518979" elapsed="0.000023"/>
</return>
<arg>${flow}</arg>
<doc>Will clean out any existing flow actions in the given &lt;FlowLib.Flow object at 0x756aa57a6450&gt; object</doc>
<status status="PASS" start="2026-10-20T23:19:29.514679" elapsed="0.004406"/>
</kw>
<kw name="Set Flow Output Action" owner="FlowLib">
<kw name="Set Flow Action" owner="FlowLib">
<kw name="Remove Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:29.522246" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa70e7060&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:29.521906" elapsed="0.000366"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Remove Elements" owner="XML">
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Removes all elements matching `xpath` from the `source` structure.</doc>
<status status="PASS" start="2026-10-20T23:19:29.522865" elapsed="0.000260"/>
</kw>
<arg>Remove Elements</arg>
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-20T23:19:29.522489" elapsed="0.000686"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:29.523669" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;161&lt;/id&gt;&lt;priority&gt;1&lt;/priority&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:29.523377" elapsed="0.000319"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:29.523872" elapsed="0.000121"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:29.524050" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>instruction</arg>
<doc>Removes the element at the given ${element_xpath} within the given &lt;FlowLib.Flow object at 0x756aa57a6450&gt;
object. The &lt;FlowLib.Flow object at 0x756aa57a6450&gt; object's xml representation will be updated to reflect this removal.</doc>
<status status="PASS" start="2026-10-20T23:19:29.521543" elapsed="0.002607"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:29.533142" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa57a8c20&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:29.532798" elapsed="0.000402"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:29.533453" elapsed="0.000347"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:29.534300" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction /&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;161&lt;/id&gt;&lt;priority&gt;1&lt;/priority&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:29.533996" elapsed="0.000348"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:29.534550" elapsed="0.000139"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:29.535195" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction /&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;161&lt;/id&gt;&lt;priority&gt;1&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:29.534914" elapsed="0.000326"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:29.535281" elapsed="0.000041"/>
</return>
<arg>${flow}</arg>
<arg>instruction</arg>
<arg>${EMPTY}</arg>
<arg>instructions</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa57a6450&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:29.532283" elapsed="0.003117"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:29.544413" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa70e6d90&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:29.544055" elapsed="0.000384"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:29.544646" elapsed="0.000347"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:29.545516" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;161&lt;/id&gt;&lt;priority&gt;1&lt;/priority&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:29.545204" elapsed="0.000341"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:29.545721" elapsed="0.000121"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:29.546365" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;161&lt;/id&gt;&lt;priority&gt;1&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:29.546079" elapsed="0.000334"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:29.546453" elapsed="0.000028"/>
</return>
<arg>${flow}</arg>
<arg>order</arg>
<arg>${instruction_order}</arg>
<arg>instructions/instruction</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa57a6450&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:29.543604" elapsed="0.002951"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:29.555605" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa5722570&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:29.555252" elapsed="0.000379"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:29.555832" elapsed="0.000362"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:29.556704" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions /&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;161&lt;/id&gt;&lt;priority&gt;1&lt;/priorit...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:29.556407" elapsed="0.000327"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:29.556909" elapsed="0.000134"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:29.557552" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions /&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;161&lt;/id&gt;&lt;priority&gt;1&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:29.557266" elapsed="0.000332"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:29.557637" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>apply-actions</arg>
<arg>${EMPTY}</arg>
<arg>instructions/instruction</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa57a6450&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:29.554789" elapsed="0.002948"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:29.566706" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa70e58a0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:29.566362" elapsed="0.000369"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:29.566931" elapsed="0.000389"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:29.567820" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action /&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;161&lt;...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:29.567523" elapsed="0.000326"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:29.568025" elapsed="0.000136"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:29.568663" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action /&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;161&lt;/id&gt;&lt;priority&gt;1&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:29.568397" elapsed="0.000312"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:29.568748" elapsed="0.000028"/>
</return>
<arg>${flow}</arg>
<arg>action</arg>
<arg>${EMPTY}</arg>
<arg>instructions/instruction/apply-actions</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa57a6450&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:29.565886" elapsed="0.002964"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:29.577755" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa57231a0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:29.577417" elapsed="0.000363"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:29.577982" elapsed="0.000394"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:29.578877" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:29.578575" elapsed="0.000330"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:29.579094" elapsed="0.000124"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:29.579730" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;161&lt;/id&gt;&lt;priority&gt;1&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:29.579459" elapsed="0.000318"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:29.579815" elapsed="0.000028"/>
</return>
<arg>${flow}</arg>
<arg>order</arg>
<arg>${action_order}</arg>
<arg>instructions/instruction/apply-actions/action</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa57a6450&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:29.576958" elapsed="0.002959"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:29.588987" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa57f5800&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:29.588648" elapsed="0.000365"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:29.589228" elapsed="0.000371"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:29.590110" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action /&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:29.589793" elapsed="0.000345"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:29.590340" elapsed="0.000132"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:29.590967" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action /&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;161&lt;/id&gt;&lt;priority&gt;1&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:29.590701" elapsed="0.000372"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:29.591114" elapsed="0.000028"/>
</return>
<arg>${flow}</arg>
<arg>${action}</arg>
<arg>${action_val}</arg>
<arg>instructions/instruction/apply-actions/action</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa57a6450&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:29.588183" elapsed="0.003034"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:29.591265" elapsed="0.000024"/>
</return>
<arg>${flow}</arg>
<arg>${instruction_order}</arg>
<arg>${action_order}</arg>
<arg>output-action</arg>
<doc>Will remove the instruction element first, then add the proper xml structure
to implement the action as given in the arguments</doc>
<status status="PASS" start="2026-10-20T23:19:29.519653" elapsed="0.071723"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:29.600335" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa57f6430&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:29.599961" elapsed="0.000400"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:29.600602" elapsed="0.000369"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:29.601503" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;INPORT&lt;/output-node-connector&gt;&lt;/ou...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:29.601180" elapsed="0.000351"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:29.601707" elapsed="0.000120"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:29.602344" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;INPORT&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;161&lt;/id&gt;&lt;priority&gt;1&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:29.602061" elapsed="0.000331"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:29.602430" elapsed="0.000028"/>
</return>
<arg>${flow}</arg>
<arg>output-node-connector</arg>
<arg>${output_port}</arg>
<arg>instructions/instruction/apply-actions/action/output-action</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa57a6450&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:29.599522" elapsed="0.003009"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:29.602579" elapsed="0.000024"/>
</return>
<arg>${flow}</arg>
<arg>0</arg>
<arg>0</arg>
<arg>${output_port}</arg>
<status status="PASS" start="2026-10-20T23:19:29.519247" elapsed="0.083425"/>
</kw>
<kw name="Set Flow Ethernet Match" owner="FlowLib">
<kw name="Clear Flow Matches" owner="FlowLib">
<kw name="Remove Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:29.606855" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa5721850&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:29.606513" elapsed="0.000367"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Remove Elements" owner="XML">
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Removes all elements matching `xpath` from the `source` structure.</doc>
<status status="PASS" start="2026-10-20T23:19:29.607474" elapsed="0.000268"/>
</kw>
<arg>Remove Elements</arg>
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-20T23:19:29.607088" elapsed="0.000705"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:29.608320" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;INPORT&lt;/output-node-connector&gt;&lt;/ou...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:29.607978" elapsed="0.000371"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:29.608527" elapsed="0.000121"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:29.608693" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>match/${match_element}</arg>
<doc>Removes the element at the given ${element_xpath} within the given &lt;FlowLib.Flow object at 0x756aa57a6450&gt;
object. The &lt;FlowLib.Flow object at 0x756aa57a6450&gt; object's xml representation will be updated to reflect this removal.</doc>
<status status="PASS" start="2026-10-20T23:19:29.606118" elapsed="0.002673"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:29.608833" elapsed="0.000023"/>
</return>
<arg>${flow}</arg>
<arg>match/ethernet-match</arg>
<doc>Will clean out any existing flow matches in the given &lt;FlowLib.Flow object at 0x756aa57a6450&gt; object</doc>
<status status="PASS" start="2026-10-20T23:19:29.604519" elapsed="0.004405"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:29.618139" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa57f49a0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:29.617743" elapsed="0.000424"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:29.618392" elapsed="0.000370"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:29.619385" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;INPORT&lt;/output-node-connector&gt;&lt;/ou...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:29.619044" elapsed="0.000369"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:29.619590" elapsed="0.000123"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:29.620215" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;INPORT&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match /&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;161&lt;/id&gt;&lt;priority&gt;1&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:29.619933" elapsed="0.000330"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:29.620318" elapsed="0.000033"/>
</return>
<arg>${flow}</arg>
<arg>ethernet-match</arg>
<arg>${EMPTY}</arg>
<arg>match</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa57a6450&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:29.617225" elapsed="0.003204"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-10-20T23:19:29.620800" level="INFO">${type} = 0x800</msg>
<var>${type}</var>
<arg>${match_value_dict}</arg>
<arg>type</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="PASS" start="2026-10-20T23:19:29.620637" elapsed="0.000186"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:29.629795" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa5723290&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:29.629440" elapsed="0.000381"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:29.630021" elapsed="0.000383"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:29.630919" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;INPORT&lt;/output-node-connector&gt;&lt;/ou...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:29.630604" elapsed="0.000343"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:29.631135" elapsed="0.000123"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:29.631763" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;INPORT&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type /&gt;&lt;/ethernet-match&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;161&lt;/id&gt;&lt;priority&gt;1&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:29.631496" elapsed="0.000316"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:29.631852" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>ethernet-type</arg>
<arg>${EMPTY}</arg>
<arg>match/ethernet-match</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa57a6450&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:29.628930" elapsed="0.003023"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:29.640774" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa70e6a20&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:29.640428" elapsed="0.000371"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:29.640997" elapsed="0.000379"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:29.641882" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;INPORT&lt;/output-node-connector&gt;&lt;/ou...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:29.641571" elapsed="0.000339"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:29.642094" elapsed="0.000120"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:29.642720" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;INPORT&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;/ethernet-match&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;161&lt;/id&gt;&lt;priority&gt;1&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:29.642449" elapsed="0.000354"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:29.642844" elapsed="0.000028"/>
</return>
<arg>${flow}</arg>
<arg>type</arg>
<arg>${type}</arg>
<arg>match/ethernet-match/ethernet-type</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa57a6450&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:29.639969" elapsed="0.002979"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-10-20T23:19:29.643326" level="INFO">${src} = 00:ab:cd:ef:01:23</msg>
<var>${src}</var>
<arg>${match_value_dict}</arg>
<arg>source</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="PASS" start="2026-10-20T23:19:29.643158" elapsed="0.000194"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:29.652448" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4fa5bc0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:29.652079" elapsed="0.000395"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:29.652680" elapsed="0.000340"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:29.653563" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;INPORT&lt;/output-node-connector&gt;&lt;/ou...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:29.653230" elapsed="0.000362"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:29.653768" elapsed="0.000120"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:29.654399" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;INPORT&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source /&gt;&lt;/ethernet-match&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;161&lt;/id&gt;&lt;priority&gt;1&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:29.654120" elapsed="0.000330"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:29.654489" elapsed="0.000028"/>
</return>
<arg>${flow}</arg>
<arg>ethernet-source</arg>
<arg>${EMPTY}</arg>
<arg>match/ethernet-match</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa57a6450&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:29.651619" elapsed="0.002972"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:29.663518" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa5723290&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:29.663151" elapsed="0.000393"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:29.663745" elapsed="0.000369"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:29.664652" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;INPORT&lt;/output-node-connector&gt;&lt;/ou...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:29.664324" elapsed="0.000357"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:29.664855" elapsed="0.000120"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:29.665489" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;INPORT&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;/ethernet-match&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;161&lt;/id&gt;&lt;priority&gt;1&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:29.665206" elapsed="0.000333"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:29.665578" elapsed="0.000028"/>
</return>
<arg>${flow}</arg>
<arg>address</arg>
<arg>${src}</arg>
<arg>match/ethernet-match/ethernet-source</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa57a6450&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:29.662701" elapsed="0.002980"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-10-20T23:19:29.666027" level="INFO">${dst} = ff:ff:ff:ff:ff:ff</msg>
<var>${dst}</var>
<arg>${match_value_dict}</arg>
<arg>destination</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="PASS" start="2026-10-20T23:19:29.665879" elapsed="0.000184"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:29.674999" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa57f7560&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:29.674640" elapsed="0.000385"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:29.675240" elapsed="0.000360"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:29.676135" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;INPORT&lt;/output-node-connector&gt;&lt;/ou...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:29.675797" elapsed="0.000366"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:29.676354" elapsed="0.000123"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:29.676960" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;INPORT&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination /&gt;&lt;/ethernet-match&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;161&lt;/id&gt;&lt;priority&gt;1&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:29.676698" elapsed="0.000314"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:29.677064" elapsed="0.000028"/>
</return>
<arg>${flow}</arg>
<arg>ethernet-destination</arg>
<arg>${EMPTY}</arg>
<arg>match/ethernet-match</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa57a6450&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:29.674174" elapsed="0.002993"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:29.686195" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa8aa1e90&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:29.685828" elapsed="0.000392"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:29.686441" elapsed="0.000358"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:29.687345" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;INPORT&lt;/output-node-connector&gt;&lt;/ou...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:29.686994" elapsed="0.000380"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:29.687549" elapsed="0.000119"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:29.688162" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;INPORT&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination&gt;&lt;address&gt;ff:ff:ff:ff:ff:ff&lt;/address&gt;&lt;/ethernet-destination&gt;&lt;/ethernet-match&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;161&lt;/id&gt;&lt;priority&gt;1&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:29.687886" elapsed="0.000328"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:29.688252" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>address</arg>
<arg>${dst}</arg>
<arg>match/ethernet-match/ethernet-destination</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa57a6450&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:29.685393" elapsed="0.002975"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:29.688419" elapsed="0.000024"/>
</return>
<arg>${flow}</arg>
<arg>${ethernet_match_dict}</arg>
<doc>Specific keyword for adding an ethernet match rules where the elements are given
in key/value pairs inside the ${match_value_dict} argument. This keyword will also remove any
existing ethernet-match elements from the flow before adding</doc>
<status status="PASS" start="2026-10-20T23:19:29.604144" elapsed="0.084368"/>
</kw>
<kw name="Set Flow IPv4 Match" owner="FlowLib">
<kw name="Clear Flow Matches" owner="FlowLib">
<kw name="Remove Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:29.692686" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa8aa1cb0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:29.692323" elapsed="0.000389"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Remove Elements" owner="XML">
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Removes all elements matching `xpath` from the `source` structure.</doc>
<status status="PASS" start="2026-10-20T23:19:29.693325" elapsed="0.000276"/>
</kw>
<arg>Remove Elements</arg>
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-20T23:19:29.692913" elapsed="0.000774"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:29.694214" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;INPORT&lt;/output-node-connector&gt;&lt;/ou...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:29.693876" elapsed="0.000366"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:29.694440" elapsed="0.000122"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:29.694608" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>match/${match_element}</arg>
<doc>Removes the element at the given ${element_xpath} within the given &lt;FlowLib.Flow object at 0x756aa57a6450&gt;
object. The &lt;FlowLib.Flow object at 0x756aa57a6450&gt; object's xml representation will be updated to reflect this removal.</doc>
<status status="PASS" start="2026-10-20T23:19:29.691917" elapsed="0.002791"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:29.694751" elapsed="0.000023"/>
</return>
<arg>${flow}</arg>
<arg>match/ipv4-source</arg>
<doc>Will clean out any existing flow matches in the given &lt;FlowLib.Flow object at 0x756aa57a6450&gt; object</doc>
<status status="PASS" start="2026-10-20T23:19:29.690321" elapsed="0.004521"/>
</kw>
<kw name="Clear Flow Matches" owner="FlowLib">
<kw name="Remove Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:29.697542" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa70e7150&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:29.697170" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Remove Elements" owner="XML">
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Removes all elements matching `xpath` from the `source` structure.</doc>
<status status="PASS" start="2026-10-20T23:19:29.698152" elapsed="0.000283"/>
</kw>
<arg>Remove Elements</arg>
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-20T23:19:29.697763" elapsed="0.000722"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:29.698989" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;INPORT&lt;/output-node-connector&gt;&lt;/ou...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:29.698669" elapsed="0.000349"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:29.699205" elapsed="0.000136"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:29.699386" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>match/${match_element}</arg>
<doc>Removes the element at the given ${element_xpath} within the given &lt;FlowLib.Flow object at 0x756aa57a6450&gt;
object. The &lt;FlowLib.Flow object at 0x756aa57a6450&gt; object's xml representation will be updated to reflect this removal.</doc>
<status status="PASS" start="2026-10-20T23:19:29.696777" elapsed="0.002708"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:29.699528" elapsed="0.000023"/>
</return>
<arg>${flow}</arg>
<arg>match/ipv4-destination</arg>
<doc>Will clean out any existing flow matches in the given &lt;FlowLib.Flow object at 0x756aa57a6450&gt; object</doc>
<status status="PASS" start="2026-10-20T23:19:29.695021" elapsed="0.004598"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-10-20T23:19:29.699958" level="INFO">${src} = 11.3.0.0/16</msg>
<var>${src}</var>
<arg>${match_value_dict}</arg>
<arg>source</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="PASS" start="2026-10-20T23:19:29.699808" elapsed="0.000174"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:29.708837" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa57f6480&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:29.708479" elapsed="0.000384"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:29.709072" elapsed="0.000353"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:29.709944" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;INPORT&lt;/output-node-connector&gt;&lt;/ou...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:29.709620" elapsed="0.000352"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:29.710158" elapsed="0.000121"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:29.710781" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;INPORT&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination&gt;&lt;address&gt;ff:ff:ff:ff:ff:ff&lt;/address&gt;&lt;/ethernet-destination&gt;&lt;/ethernet-match&gt;&lt;ipv4-source&gt;11.3.0.0/16&lt;/ipv4-source&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;161&lt;/id&gt;&lt;priority&gt;1&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:29.710517" elapsed="0.000316"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:29.710873" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>ipv4-source</arg>
<arg>${src}</arg>
<arg>match</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa57a6450&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:29.708017" elapsed="0.002956"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-10-20T23:19:29.711397" level="INFO">${dst} = 99.0.0.0/8</msg>
<var>${dst}</var>
<arg>${match_value_dict}</arg>
<arg>destination</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="PASS" start="2026-10-20T23:19:29.711221" elapsed="0.000200"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:29.720536" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa8aa16c0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:29.720158" elapsed="0.000404"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:29.720765" elapsed="0.000391"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:29.721725" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;INPORT&lt;/output-node-connector&gt;&lt;/ou...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:29.721389" elapsed="0.000365"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:29.721929" elapsed="0.000150"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:29.722579" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;INPORT&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination&gt;&lt;address&gt;ff:ff:ff:ff:ff:ff&lt;/address&gt;&lt;/ethernet-destination&gt;&lt;/ethernet-match&gt;&lt;ipv4-source&gt;11.3.0.0/16&lt;/ipv4-source&gt;&lt;ipv4-destination&gt;99.0.0.0/8&lt;/ipv4-destination&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;161&lt;/id&gt;&lt;priority&gt;1&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:29.722300" elapsed="0.000333"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:29.722673" elapsed="0.000028"/>
</return>
<arg>${flow}</arg>
<arg>ipv4-destination</arg>
<arg>${dst}</arg>
<arg>match</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa57a6450&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:29.719705" elapsed="0.003071"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:29.722824" elapsed="0.000023"/>
</return>
<arg>${flow}</arg>
<arg>${ipv4_match_dict}</arg>
<doc>Specific keyword for adding an ipv4 match rules where the elements are given
in key/value pairs inside the ${match_value_dict} argument. This keyword will also remove any
existing ipv4 match elements from the flow before adding</doc>
<status status="PASS" start="2026-10-20T23:19:29.689939" elapsed="0.032978"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:29.723439" level="INFO">Flow XML is &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;INPORT&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination&gt;&lt;address&gt;ff:ff:ff:ff:ff:ff&lt;/address&gt;&lt;/ethernet-destination&gt;&lt;/ethernet-match&gt;&lt;ipv4-source&gt;11.3.0.0/16&lt;/ipv4-source&gt;&lt;ipv4-destination&gt;99.0.0.0/8&lt;/ipv4-destination&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;161&lt;/id&gt;&lt;priority&gt;1&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>Flow XML is ${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:29.723148" elapsed="0.000343"/>
</kw>
<kw name="Call Method" owner="BuiltIn">
<arg>${test_switch}</arg>
<arg>create_flow_match_elements</arg>
<arg>${flow.xml}</arg>
<doc>Calls the named method of the given object with the provided arguments.</doc>
<status status="PASS" start="2026-10-20T23:19:29.723673" elapsed="0.000423"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:29.724614" level="INFO">['dl_src=00:ab:cd:ef:01:23,dl_dst=ff:ff:ff:ff:ff:ff,nw_src=11.3.0.0/16,nw_dst=99.0.0.0/8 actions=IN_PORT', 'table=200']</msg>
<arg>${test_switch.flow_validations}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:29.724339" elapsed="0.000317"/>
</kw>
<kw name="Get Switch Datapath ID" owner="SwitchUtils">
<kw name="Configure Connection Index And Prompt Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${switch.connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-10-20T23:19:29.725942" elapsed="0.000178"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:29.725676" elapsed="0.000479"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:29.725656" elapsed="0.000524"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Set Client Configuration" owner="SSHLibrary">
<arg>prompt=${switch.mgmt_prompt}</arg>
<arg>timeout=5s</arg>
<doc>Update the `configuration` of the current connection.</doc>
<status status="PASS" start="2026-10-20T23:19:29.726501" elapsed="0.000268"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:29.726231" elapsed="0.000574"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:29.726216" elapsed="0.000613"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Switch Connection" owner="Telnet">
<arg>${switch.connection_index}</arg>
<doc>Switches between active connections using an index or an alias.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:29.727134" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:29.726880" elapsed="0.000305"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:29.726865" elapsed="0.000342"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Set Prompt" owner="Telnet">
<arg>${switch.mgmt_prompt}</arg>
<arg>True</arg>
<doc>Sets the prompt used by the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:29.727510" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:29.727256" elapsed="0.000344"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:29.727242" elapsed="0.000381"/>
</if>
<arg>${switch}</arg>
<doc>when using multiple switch connections (e.g. more than one switch device) this keyword will switch the current connection index and prompt so that the following
Read or Write actions happen on the correct device.</doc>
<status status="PASS" start="2026-10-20T23:19:29.725296" elapsed="0.002372"/>
</kw>
<kw name="Read Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Read" owner="SSHLibrary">
<doc>Consumes and returns everything available on the server output.</doc>
<status status="PASS" start="2026-10-20T23:19:29.728365" elapsed="0.000116"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:29.728109" elapsed="0.000403"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:29.728092" elapsed="0.000443"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Read" owner="Telnet">
<doc>Reads everything that is currently available in the output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:29.728811" elapsed="0.000068"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:29.728583" elapsed="0.000326"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:29.728569" elapsed="0.000364"/>
</if>
<arg>${switch}</arg>
<doc>Wraps the Read command so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:29.727883" elapsed="0.001094"/>
</kw>
<kw name="Execute Command Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:19:29.729929" level="INFO">Executing command '/sbin/ifconfig s1 | grep -o -E "([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}"'.</msg>
<msg time="2026-10-20T23:19:29.742348" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:19:29.742440" level="INFO">${output} = e2:07:e3:56:6d:42</msg>
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:19:29.729821" elapsed="0.012643"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:29.729552" elapsed="0.012946"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${output}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:29.742708" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:29.742522" elapsed="0.000238"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:29.729535" elapsed="0.013245"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Execute Command" owner="Telnet">
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes the given `command` and reads, logs, and returns resulting output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:29.743087" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:29.742830" elapsed="0.000311"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:29.743625" level="INFO">${output} = e2:07:e3:56:6d:42</msg>
<var>${output}</var>
<arg>${output}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:29.743353" elapsed="0.000297"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:29.743163" elapsed="0.000520"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:29.742816" elapsed="0.000886"/>
</if>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-20T23:19:29.743734" elapsed="0.000026"/>
</return>
<msg time="2026-10-20T23:19:29.743872" level="INFO">${switch.datapath_id_output_string} = e2:07:e3:56:6d:42</msg>
<var>${switch.datapath_id_output_string}</var>
<arg>${switch}</arg>
<arg>${switch.datapath_id_output_command}</arg>
<doc>Wraps the Execute Command keyword so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:29.729248" elapsed="0.014648"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:29.744426" level="INFO">e2:07:e3:56:6d:42</msg>
<arg>${switch.datapath_id_output_string}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:29.744139" elapsed="0.000328"/>
</kw>
<kw name="Call Method" owner="BuiltIn">
<arg>${switch}</arg>
<arg>update_datapath_id</arg>
<doc>Calls the named method of the given object with the provided arguments.</doc>
<status status="PASS" start="2026-10-20T23:19:29.744648" elapsed="0.000244"/>
</kw>
<return>
<value>${switch.datapath_id}</value>
<status status="PASS" start="2026-10-20T23:19:29.744936" elapsed="0.000025"/>
</return>
<msg time="2026-10-20T23:19:29.745122" level="INFO">${dpid_id} = 248523506740546</msg>
<var>${dpid_id}</var>
<arg>${test_switch}</arg>
<doc>Using the connection index for the given switch, will execute the command string
"datapath_id_output_command" which will store the output in switch.datapath_id_output_string.
The switch object method "update_datapath_id" is called which is assumed to place the ODL
friendly (decimal) version of the datapath id in to switch.datapath_id and the value is also
returned from this keyword.</doc>
<status status="PASS" start="2026-10-20T23:19:29.724851" elapsed="0.020295"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Add Flow To Controller And Verify" owner="FlowLib">
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:19:29.752065" level="INFO">PUT Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=161 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=161 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Content-Length': '665', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;INPORT&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination&gt;&lt;address&gt;ff:ff:ff:ff:ff:ff&lt;/address&gt;&lt;/ethernet-destination&gt;&lt;/ethernet-match&gt;&lt;ipv4-source&gt;11.3.0.0/16&lt;/ipv4-source&gt;&lt;ipv4-destination&gt;99.0.0.0/8&lt;/ipv4-destination&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;161&lt;/id&gt;&lt;priority&gt;1&lt;/priority&gt;&lt;/flow&gt; 
 </msg>
<msg time="2026-10-20T23:19:29.752124" level="INFO">PUT Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=161 
 status=404, reason=Not Found 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-10-20T23:19:29.752232" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=161</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=${node_id}/flow-node-inventory:table=${table_id}/flow=${flow_id}</arg>
<arg>headers=${HEADERS_XML}</arg>
<arg>data=${flow_body}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:19:29.746389" elapsed="0.006292">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=161</status>
</kw>
<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-10-20T23:19:29.752930" elapsed="0.000021"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=${node_id}/flow-node-inventory:table=${table_id}/flow=${flow_id}?content=config</arg>
<arg>headers=${ACCEPT_XML}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:29.753116" elapsed="0.000020"/>
</kw>
<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-10-20T23:19:29.753371" elapsed="0.000021"/>
</kw>
<kw name="Compare Xml" owner="Common">
<arg>${flow_body}</arg>
<arg>${resp.text}</arg>
<doc>compare the two XML files to see if they contain the same data
but could be if different order.
It just split the xml in to lines and just check the line is in
the other file</doc>
<status status="NOT RUN" start="2026-10-20T23:19:29.753559" elapsed="0.000019"/>
</kw>
<arg>${flow.xml}</arg>
<arg>openflow%3A${dpid_id}</arg>
<arg>${flow.table_id}</arg>
<arg>${flow.id}</arg>
<doc>Push flow through REST-API and verify in data-store</doc>
<status status="FAIL" start="2026-10-20T23:19:29.745856" elapsed="0.007818">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=161</status>
</kw>
<kw name="Add Flow To Controller And Verify" owner="FlowLib">
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:19:30.759627" level="INFO">PUT Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=161 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=161 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Content-Length': '665', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;INPORT&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination&gt;&lt;address&gt;ff:ff:ff:ff:ff:ff&lt;/address&gt;&lt;/ethernet-destination&gt;&lt;/ethernet-match&gt;&lt;ipv4-source&gt;11.3.0.0/16&lt;/ipv4-source&gt;&lt;ipv4-destination&gt;99.0.0.0/8&lt;/ipv4-destination&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;161&lt;/id&gt;&lt;priority&gt;1&lt;/priority&gt;&lt;/flow&gt; 
 </msg>
<msg time="2026-10-20T23:19:30.759760" level="INFO">PUT Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=161 
 status=404, reason=Not Found 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-10-20T23:19:30.759933" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=161</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=${node_id}/flow-node-inventory:table=${table_id}/flow=${flow_id}</arg>
<arg>headers=${HEADERS_XML}</arg>
<arg>data=${flow_body}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:19:30.755441" elapsed="0.005198">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=161</status>
</kw>
<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-10-20T23:19:30.761081" elapsed="0.000024"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=${node_id}/flow-node-inventory:table=${table_id}/flow=${flow_id}?content=config</arg>
<arg>headers=${ACCEPT_XML}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:30.761260" elapsed="0.000019"/>
</kw>
<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-10-20T23:19:30.761820" elapsed="0.000022"/>
</kw>
<kw name="Compare Xml" owner="Common">
<arg>${flow_body}</arg>
<arg>${resp.text}</arg>
<doc>compare the two XML files to see if they contain the same data
but could be if different order.
It just split the xml in to lines and just check the line is in
the other file</doc>
<status status="NOT RUN" start="2026-10-20T23:19:30.762014" elapsed="0.000019"/>
</kw>
<arg>${flow.xml}</arg>
<arg>openflow%3A${dpid_id}</arg>
<arg>${flow.table_id}</arg>
<arg>${flow.id}</arg>
<doc>Push flow through REST-API and verify in data-store</doc>
<status status="FAIL" start="2026-10-20T23:19:30.754436" elapsed="0.007703">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=161</status>
</kw>
<kw name="Add Flow To Controller And Verify" owner="FlowLib">
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:19:31.770751" level="INFO">PUT Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=161 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=161 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Content-Length': '665', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;INPORT&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination&gt;&lt;address&gt;ff:ff:ff:ff:ff:ff&lt;/address&gt;&lt;/ethernet-destination&gt;&lt;/ethernet-match&gt;&lt;ipv4-source&gt;11.3.0.0/16&lt;/ipv4-source&gt;&lt;ipv4-destination&gt;99.0.0.0/8&lt;/ipv4-destination&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;161&lt;/id&gt;&lt;priority&gt;1&lt;/priority&gt;&lt;/flow&gt; 
 </msg>
<msg time="2026-10-20T23:19:31.770886" level="INFO">PUT Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=161 
 status=404, reason=Not Found 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-10-20T23:19:31.771230" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=161</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=${node_id}/flow-node-inventory:table=${table_id}/flow=${flow_id}</arg>
<arg>headers=${HEADERS_XML}</arg>
<arg>data=${flow_body}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:19:31.764378" elapsed="0.007655">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=161</status>
</kw>
<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-10-20T23:19:31.772714" elapsed="0.000050"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=${node_id}/flow-node-inventory:table=${table_id}/flow=${flow_id}?content=config</arg>
<arg>headers=${ACCEPT_XML}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:31.773131" elapsed="0.000046"/>
</kw>
<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-10-20T23:19:31.773698" elapsed="0.000043"/>
</kw>
<kw name="Compare Xml" owner="Common">
<arg>${flow_body}</arg>
<arg>${resp.text}</arg>
<doc>compare the two XML files to see if they contain the same data
but could be if different order.
It just split the xml in to lines and just check the line is in
the other file</doc>
<status status="NOT RUN" start="2026-10-20T23:19:31.774133" elapsed="0.000043"/>
</kw>
<arg>${flow.xml}</arg>
<arg>openflow%3A${dpid_id}</arg>
<arg>${flow.table_id}</arg>
<arg>${flow.id}</arg>
<doc>Push flow through REST-API and verify in data-store</doc>
<status status="FAIL" start="2026-10-20T23:19:31.762899" elapsed="0.011509">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=161</status>
</kw>
<kw name="Add Flow To Controller And Verify" owner="FlowLib">
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:19:32.782837" level="INFO">PUT Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=161 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=161 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Content-Length': '665', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;INPORT&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination&gt;&lt;address&gt;ff:ff:ff:ff:ff:ff&lt;/address&gt;&lt;/ethernet-destination&gt;&lt;/ethernet-match&gt;&lt;ipv4-source&gt;11.3.0.0/16&lt;/ipv4-source&gt;&lt;ipv4-destination&gt;99.0.0.0/8&lt;/ipv4-destination&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;161&lt;/id&gt;&lt;priority&gt;1&lt;/priority&gt;&lt;/flow&gt; 
 </msg>
<msg time="2026-10-20T23:19:32.782970" level="INFO">PUT Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=161 
 status=404, reason=Not Found 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-10-20T23:19:32.783200" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=161</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=${node_id}/flow-node-inventory:table=${table_id}/flow=${flow_id}</arg>
<arg>headers=${HEADERS_XML}</arg>
<arg>data=${flow_body}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:19:32.776779" elapsed="0.007196">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=161</status>
</kw>
<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-10-20T23:19:32.784665" elapsed="0.000050"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=${node_id}/flow-node-inventory:table=${table_id}/flow=${flow_id}?content=config</arg>
<arg>headers=${ACCEPT_XML}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:32.785052" elapsed="0.000043"/>
</kw>
<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-10-20T23:19:32.785636" elapsed="0.000044"/>
</kw>
<kw name="Compare Xml" owner="Common">
<arg>${flow_body}</arg>
<arg>${resp.text}</arg>
<doc>compare the two XML files to see if they contain the same data
but could be if different order.
It just split the xml in to lines and just check the line is in
the other file</doc>
<status status="NOT RUN" start="2026-10-20T23:19:32.786065" elapsed="0.000042"/>
</kw>
<arg>${flow.xml}</arg>
<arg>openflow%3A${dpid_id}</arg>
<arg>${flow.table_id}</arg>
<arg>${flow.id}</arg>
<doc>Push flow through REST-API and verify in data-store</doc>
<status status="FAIL" start="2026-10-20T23:19:32.775280" elapsed="0.011076">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=161</status>
</kw>
<msg time="2026-10-20T23:19:32.786560" level="FAIL">Keyword 'Add Flow To Controller And Verify' failed after retrying for 3 seconds. The last error was: HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=161</msg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Add Flow To Controller And Verify</arg>
<arg>${flow.xml}</arg>
<arg>openflow%3A${dpid_id}</arg>
<arg>${flow.table_id}</arg>
<arg>${flow.id}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-10-20T23:19:29.745379" elapsed="3.041377">Keyword 'Add Flow To Controller And Verify' failed after retrying for 3 seconds. The last error was: HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=161</status>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>3s</arg>
<arg>1s</arg>
<arg>Validate Switch Output</arg>
<arg>${test_switch}</arg>
<arg>${test_switch.dump_all_flows}</arg>
<arg>${test_switch.flow_validations}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:32.787329" elapsed="0.000048"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>3s</arg>
<arg>1s</arg>
<arg>Remove Flow From Controller And Verify</arg>
<arg>openflow%3A${dpid_id}</arg>
<arg>${flow.table_id}</arg>
<arg>${flow.id}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:32.787962" elapsed="0.000044"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>3s</arg>
<arg>1s</arg>
<arg>Validate Switch Output</arg>
<arg>${test_switch}</arg>
<arg>${test_switch.dump_all_flows}</arg>
<arg>${test_switch.flow_validations}</arg>
<arg>false</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:32.788538" elapsed="0.000043"/>
</kw>
<arg>${TEST_NAME}</arg>
<arg>200</arg>
<arg>161</arg>
<arg>1</arg>
<status status="FAIL" start="2026-10-20T23:19:29.432992" elapsed="3.355800">Keyword 'Add Flow To Controller And Verify' failed after retrying for 3 seconds. The last error was: HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=161</status>
</kw>
<doc>OF1.3: OFPP_INPORT = 0xfffffff8, /* Send the packet out the input port. This
reserved port must be explicitly used
in order to send back out of the input
port. */
</doc>
<tag>inport</tag>
<status status="FAIL" start="2026-10-20T23:19:29.431525" elapsed="3.357666">Keyword 'Add Flow To Controller And Verify' failed after retrying for 3 seconds. The last error was: HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=161</status>
</test>
<test id="s1-s4-s2-t2" name="TABLE" line="59">
<kw name="Create And Remove Flow">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:19:32.793453" level="INFO">${ethernet_match_dict} = {'type': '0x800', 'destination': 'ff:ff:ff:ff:ff:ff', 'source': '00:ab:cd:ef:01:23'}</msg>
<var>${ethernet_match_dict}</var>
<arg>type=${eth_type}</arg>
<arg>destination=${eth_dst}</arg>
<arg>source=${eth_src}</arg>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:19:32.792417" elapsed="0.001095"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:19:32.794857" level="INFO">${ipv4_match_dict} = {'source': '11.3.0.0/16', 'destination': '99.0.0.0/8'}</msg>
<var>${ipv4_match_dict}</var>
<arg>source=${ipv4_src}</arg>
<arg>destination=${ipv4_dst}</arg>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:19:32.793996" elapsed="0.000918"/>
</kw>
<kw name="Create Inventory Flow" owner="FlowLib">
<kw name="Make Inventory Flow" owner="FlowLib">
<msg time="2026-10-20T23:19:32.796286" level="INFO">${flow} = &lt;FlowLib.Flow object at 0x756aa702cd10&gt;</msg>
<var>${flow}</var>
<doc>Robot Keyword to create and return an instance of the Flow
class.</doc>
<status status="PASS" start="2026-10-20T23:19:32.795997" elapsed="0.000377"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:32.796468" elapsed="0.000068"/>
</return>
<msg time="2026-10-20T23:19:32.796768" level="INFO">${flow} = &lt;FlowLib.Flow object at 0x756aa702cd10&gt;</msg>
<var>${flow}</var>
<doc>Calls FlowLib.Make_Inventory_Flow function and initializes and sanitizes
the basic flow elements that can be given to flow:inventory</doc>
<status status="PASS" start="2026-10-20T23:19:32.795343" elapsed="0.001478"/>
</kw>
<kw name="Set &quot;${flow}&quot; &quot;table_id&quot; With &quot;${table_id}&quot;" owner="FlowLib" source_name="Set &quot;${flow}&quot; &quot;${property}&quot; With &quot;${property_val}&quot;">
<if>
<branch type="IF" condition="&quot;table_id&quot; != &quot;${property}&quot; and &quot;cookie_mask&quot; != &quot;${property}&quot;">
<kw name="Replace String" owner="String">
<var>${property}</var>
<arg>${property}</arg>
<arg>_</arg>
<arg>-</arg>
<doc>Replaces `search_for` in the given `string` with `replace_with`.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:32.802138" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:32.801503" elapsed="0.000772"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:32.803444" level="INFO">${property} = table_id</msg>
<var>${property}</var>
<arg>${property}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:32.802762" elapsed="0.000737"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:32.802360" elapsed="0.001214"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:32.801459" elapsed="0.002162"/>
</if>
<kw name="Remove Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:32.808652" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa57f49a0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:32.807813" elapsed="0.000896"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Remove Elements" owner="XML">
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Removes all elements matching `xpath` from the `source` structure.</doc>
<status status="PASS" start="2026-10-20T23:19:32.810052" elapsed="0.000615"/>
</kw>
<arg>Remove Elements</arg>
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-20T23:19:32.809173" elapsed="0.001605"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:32.812044" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:32.811216" elapsed="0.000889"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:32.812560" elapsed="0.000275"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:32.812935" elapsed="0.000062"/>
</return>
<arg>${flow}</arg>
<arg>${property}</arg>
<doc>Removes the element at the given ${element_xpath} within the given &lt;FlowLib.Flow object at 0x756aa702cd10&gt;
object. The &lt;FlowLib.Flow object at 0x756aa702cd10&gt; object's xml representation will be updated to reflect this removal.</doc>
<status status="PASS" start="2026-10-20T23:19:32.806916" elapsed="0.006270"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:32.828274" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa8aa1490&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:32.827799" elapsed="0.000532"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:32.828616" elapsed="0.000592"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:32.829906" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:32.829507" elapsed="0.000437"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:32.830268" elapsed="0.000198"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:32.831179" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:32.830777" elapsed="0.000465"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:32.831298" elapsed="0.000060"/>
</return>
<arg>${flow}</arg>
<arg>${property}</arg>
<arg>${property_val}</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa702cd10&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:32.827151" elapsed="0.004317"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>${property}</arg>
<arg>${property_val}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:32.831724" elapsed="0.000189"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:32.831976" elapsed="0.000036"/>
</return>
<doc>Embedded variables to make higher level keywords more readable.
There are some cases where the python attribute uses an underscore,
but a hyphen needs to be used. This seems inconsistent, and may need
to be looked at from the openflow plugin perspective.</doc>
<status status="PASS" start="2026-10-20T23:19:32.800862" elapsed="0.031252"/>
</kw>
<kw name="Set &quot;${flow}&quot; &quot;id&quot; With &quot;${flow_id}&quot;" owner="FlowLib" source_name="Set &quot;${flow}&quot; &quot;${property}&quot; With &quot;${property_val}&quot;">
<if>
<branch type="IF" condition="&quot;table_id&quot; != &quot;${property}&quot; and &quot;cookie_mask&quot; != &quot;${property}&quot;">
<kw name="Replace String" owner="String">
<msg time="2026-10-20T23:19:32.835537" level="INFO">${property} = id</msg>
<var>${property}</var>
<arg>${property}</arg>
<arg>_</arg>
<arg>-</arg>
<doc>Replaces `search_for` in the given `string` with `replace_with`.</doc>
<status status="PASS" start="2026-10-20T23:19:32.835251" elapsed="0.000322"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:32.834858" elapsed="0.000768"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${property}</var>
<arg>${property}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:32.835912" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:32.835659" elapsed="0.000327"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:32.834834" elapsed="0.001192"/>
</if>
<kw name="Remove Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:32.840487" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa8aa1670&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:32.839980" elapsed="0.000543"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Remove Elements" owner="XML">
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Removes all elements matching `xpath` from the `source` structure.</doc>
<status status="PASS" start="2026-10-20T23:19:32.841372" elapsed="0.000387"/>
</kw>
<arg>Remove Elements</arg>
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-20T23:19:32.840801" elapsed="0.001031"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:32.842592" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:32.842098" elapsed="0.000533"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:32.842890" elapsed="0.000173"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:32.843144" elapsed="0.000040"/>
</return>
<arg>${flow}</arg>
<arg>${property}</arg>
<doc>Removes the element at the given ${element_xpath} within the given &lt;FlowLib.Flow object at 0x756aa702cd10&gt;
object. The &lt;FlowLib.Flow object at 0x756aa702cd10&gt; object's xml representation will be updated to reflect this removal.</doc>
<status status="PASS" start="2026-10-20T23:19:32.839375" elapsed="0.003916"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:32.853078" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4d1d350&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:32.852747" elapsed="0.000358"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:32.853370" elapsed="0.000339"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:32.854204" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;261&lt;/id&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:32.853905" elapsed="0.000326"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:32.854425" elapsed="0.000122"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:32.855032" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;261&lt;/id&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:32.854768" elapsed="0.000307"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:32.855114" elapsed="0.000042"/>
</return>
<arg>${flow}</arg>
<arg>${property}</arg>
<arg>${property_val}</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa702cd10&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:32.852285" elapsed="0.002947"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>${property}</arg>
<arg>${property_val}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:32.855463" elapsed="0.000134"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:32.855642" elapsed="0.000025"/>
</return>
<doc>Embedded variables to make higher level keywords more readable.
There are some cases where the python attribute uses an underscore,
but a hyphen needs to be used. This seems inconsistent, and may need
to be looked at from the openflow plugin perspective.</doc>
<status status="PASS" start="2026-10-20T23:19:32.834502" elapsed="0.021236"/>
</kw>
<kw name="Set &quot;${flow}&quot; &quot;priority&quot; With &quot;${priority}&quot;" owner="FlowLib" source_name="Set &quot;${flow}&quot; &quot;${property}&quot; With &quot;${property_val}&quot;">
<if>
<branch type="IF" condition="&quot;table_id&quot; != &quot;${property}&quot; and &quot;cookie_mask&quot; != &quot;${property}&quot;">
<kw name="Replace String" owner="String">
<msg time="2026-10-20T23:19:32.858078" level="INFO">${property} = priority</msg>
<var>${property}</var>
<arg>${property}</arg>
<arg>_</arg>
<arg>-</arg>
<doc>Replaces `search_for` in the given `string` with `replace_with`.</doc>
<status status="PASS" start="2026-10-20T23:19:32.857897" elapsed="0.000205"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:32.857634" elapsed="0.000524"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${property}</var>
<arg>${property}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:32.858379" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:32.858182" elapsed="0.000248"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:32.857616" elapsed="0.000834"/>
</if>
<kw name="Remove Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:32.860612" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa70e7d30&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:32.860269" elapsed="0.000369"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Remove Elements" owner="XML">
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Removes all elements matching `xpath` from the `source` structure.</doc>
<status status="PASS" start="2026-10-20T23:19:32.861288" elapsed="0.000272"/>
</kw>
<arg>Remove Elements</arg>
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-20T23:19:32.860833" elapsed="0.000779"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:32.862088" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;261&lt;/id&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:32.861803" elapsed="0.000312"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:32.862328" elapsed="0.000132"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:32.862505" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>${property}</arg>
<doc>Removes the element at the given ${element_xpath} within the given &lt;FlowLib.Flow object at 0x756aa702cd10&gt;
object. The &lt;FlowLib.Flow object at 0x756aa702cd10&gt; object's xml representation will be updated to reflect this removal.</doc>
<status status="PASS" start="2026-10-20T23:19:32.859877" elapsed="0.002727"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:32.871755" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa55b8720&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:32.871415" elapsed="0.000366"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:32.871985" elapsed="0.000373"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:32.872847" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;261&lt;/id&gt;&lt;priority&gt;65535&lt;/priority&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:32.872556" elapsed="0.000318"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:32.873053" elapsed="0.000140"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:32.873713" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;261&lt;/id&gt;&lt;priority&gt;65535&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:32.873435" elapsed="0.000322"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:32.873797" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>${property}</arg>
<arg>${property_val}</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa702cd10&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:32.870938" elapsed="0.002963"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>${property}</arg>
<arg>${property_val}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:32.874086" elapsed="0.000149"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:32.874281" elapsed="0.000040"/>
</return>
<doc>Embedded variables to make higher level keywords more readable.
There are some cases where the python attribute uses an underscore,
but a hyphen needs to be used. This seems inconsistent, and may need
to be looked at from the openflow plugin perspective.</doc>
<status status="PASS" start="2026-10-20T23:19:32.857353" elapsed="0.017043"/>
</kw>
<kw name="Clear Flow Actions" owner="FlowLib">
<kw name="Remove Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:32.876866" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa8aa1800&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:32.876540" elapsed="0.000352"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Remove Elements" owner="XML">
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Removes all elements matching `xpath` from the `source` structure.</doc>
<status status="PASS" start="2026-10-20T23:19:32.877547" elapsed="0.000258"/>
</kw>
<arg>Remove Elements</arg>
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-20T23:19:32.877153" elapsed="0.000702"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:32.878358" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;261&lt;/id&gt;&lt;priority&gt;65535&lt;/priority&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:32.878043" elapsed="0.000343"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:32.878563" elapsed="0.000121"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:32.878729" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>instructions/instruction</arg>
<doc>Removes the element at the given ${element_xpath} within the given &lt;FlowLib.Flow object at 0x756aa702cd10&gt;
object. The &lt;FlowLib.Flow object at 0x756aa702cd10&gt; object's xml representation will be updated to reflect this removal.</doc>
<status status="PASS" start="2026-10-20T23:19:32.876158" elapsed="0.002671"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:32.878871" elapsed="0.000023"/>
</return>
<arg>${flow}</arg>
<doc>Will clean out any existing flow actions in the given &lt;FlowLib.Flow object at 0x756aa702cd10&gt; object</doc>
<status status="PASS" start="2026-10-20T23:19:32.874573" elapsed="0.004392"/>
</kw>
<kw name="Set Flow Output Action" owner="FlowLib">
<kw name="Set Flow Action" owner="FlowLib">
<kw name="Remove Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:32.882364" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa57f49a0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:32.881955" elapsed="0.000439"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Remove Elements" owner="XML">
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Removes all elements matching `xpath` from the `source` structure.</doc>
<status status="PASS" start="2026-10-20T23:19:32.883021" elapsed="0.000310"/>
</kw>
<arg>Remove Elements</arg>
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-20T23:19:32.882608" elapsed="0.000778"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:32.883907" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;261&lt;/id&gt;&lt;priority&gt;65535&lt;/priority&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:32.883591" elapsed="0.000344"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:32.884146" elapsed="0.000135"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:32.884349" elapsed="0.000031"/>
</return>
<arg>${flow}</arg>
<arg>instruction</arg>
<doc>Removes the element at the given ${element_xpath} within the given &lt;FlowLib.Flow object at 0x756aa702cd10&gt;
object. The &lt;FlowLib.Flow object at 0x756aa702cd10&gt; object's xml representation will be updated to reflect this removal.</doc>
<status status="PASS" start="2026-10-20T23:19:32.881557" elapsed="0.002904"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:32.893937" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa8aa1800&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:32.893602" elapsed="0.000360"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:32.894184" elapsed="0.000356"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:32.895025" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction /&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;261&lt;/id&gt;&lt;priority&gt;65535&lt;/priority&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:32.894738" elapsed="0.000315"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:32.895249" elapsed="0.000139"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:32.895887" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction /&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;261&lt;/id&gt;&lt;priority&gt;65535&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:32.895616" elapsed="0.000315"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:32.895969" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>instruction</arg>
<arg>${EMPTY}</arg>
<arg>instructions</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa702cd10&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:32.893134" elapsed="0.002937"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:32.905155" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa57f4400&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:32.904803" elapsed="0.000378"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:32.905398" elapsed="0.000342"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:32.906245" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;261&lt;/id&gt;&lt;priority&gt;65535&lt;/priority&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:32.905937" elapsed="0.000388"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:32.906508" elapsed="0.000125"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:32.907144" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;261&lt;/id&gt;&lt;priority&gt;65535&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:32.906859" elapsed="0.000333"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:32.907231" elapsed="0.000028"/>
</return>
<arg>${flow}</arg>
<arg>order</arg>
<arg>${instruction_order}</arg>
<arg>instructions/instruction</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa702cd10&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:32.904278" elapsed="0.003071"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:32.916488" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa70e7c90&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:32.916115" elapsed="0.000399"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:32.916718" elapsed="0.000343"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:32.917586" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions /&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;261&lt;/id&gt;&lt;priority&gt;65535&lt;/pri...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:32.917277" elapsed="0.000337"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:32.917791" elapsed="0.000120"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:32.918527" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions /&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;261&lt;/id&gt;&lt;priority&gt;65535&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:32.918225" elapsed="0.000349"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:32.918614" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>apply-actions</arg>
<arg>${EMPTY}</arg>
<arg>instructions/instruction</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa702cd10&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:32.915661" elapsed="0.003059"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:32.927771" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa70e7d30&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:32.927427" elapsed="0.000371"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:32.928000" elapsed="0.000382"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:32.928955" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action /&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;261&lt;...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:32.928582" elapsed="0.000404"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:32.929183" elapsed="0.000141"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:32.929823" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action /&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;261&lt;/id&gt;&lt;priority&gt;65535&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:32.929552" elapsed="0.000318"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:32.929909" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>action</arg>
<arg>${EMPTY}</arg>
<arg>instructions/instruction/apply-actions</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa702cd10&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:32.926944" elapsed="0.003070"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:32.939326" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa8aa1710&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:32.938947" elapsed="0.000442"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:32.939614" elapsed="0.000384"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:32.940541" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:32.940219" elapsed="0.000351"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:32.940752" elapsed="0.000122"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:32.941406" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;261&lt;/id&gt;&lt;priority&gt;65535&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:32.941098" elapsed="0.000355"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:32.941492" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>order</arg>
<arg>${action_order}</arg>
<arg>instructions/instruction/apply-actions/action</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa702cd10&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:32.938502" elapsed="0.003092"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:32.951027" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa57f66b0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:32.950627" elapsed="0.000429"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:32.951288" elapsed="0.000369"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:32.952191" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action /&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:32.951858" elapsed="0.000363"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:32.952417" elapsed="0.000127"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:32.953110" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action /&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;261&lt;/id&gt;&lt;priority&gt;65535&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:32.952832" elapsed="0.000343"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:32.953217" elapsed="0.000033"/>
</return>
<arg>${flow}</arg>
<arg>${action}</arg>
<arg>${action_val}</arg>
<arg>instructions/instruction/apply-actions/action</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa702cd10&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:32.950020" elapsed="0.003324"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:32.953397" elapsed="0.000024"/>
</return>
<arg>${flow}</arg>
<arg>${instruction_order}</arg>
<arg>${action_order}</arg>
<arg>output-action</arg>
<doc>Will remove the instruction element first, then add the proper xml structure
to implement the action as given in the arguments</doc>
<status status="PASS" start="2026-10-20T23:19:32.879660" elapsed="0.073841"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:32.962767" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa8aa1620&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:32.962421" elapsed="0.000371"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:32.962994" elapsed="0.000377"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:32.963874" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;TABLE&lt;/output-node-connector&gt;&lt;/out...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:32.963569" elapsed="0.000333"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:32.964081" elapsed="0.000138"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:32.964809" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;TABLE&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;261&lt;/id&gt;&lt;priority&gt;65535&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:32.964533" elapsed="0.000376"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:32.964952" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>output-node-connector</arg>
<arg>${output_port}</arg>
<arg>instructions/instruction/apply-actions/action/output-action</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa702cd10&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:32.961951" elapsed="0.003103"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:32.965105" elapsed="0.000040"/>
</return>
<arg>${flow}</arg>
<arg>0</arg>
<arg>0</arg>
<arg>${output_port}</arg>
<status status="PASS" start="2026-10-20T23:19:32.879169" elapsed="0.086049"/>
</kw>
<kw name="Set Flow Ethernet Match" owner="FlowLib">
<kw name="Clear Flow Matches" owner="FlowLib">
<kw name="Remove Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:32.969613" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4d5f380&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:32.969247" elapsed="0.000392"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Remove Elements" owner="XML">
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Removes all elements matching `xpath` from the `source` structure.</doc>
<status status="PASS" start="2026-10-20T23:19:32.970240" elapsed="0.000272"/>
</kw>
<arg>Remove Elements</arg>
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-20T23:19:32.969844" elapsed="0.000719"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:32.971055" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;TABLE&lt;/output-node-connector&gt;&lt;/out...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:32.970751" elapsed="0.000332"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:32.971276" elapsed="0.000147"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:32.971468" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>match/${match_element}</arg>
<doc>Removes the element at the given ${element_xpath} within the given &lt;FlowLib.Flow object at 0x756aa702cd10&gt;
object. The &lt;FlowLib.Flow object at 0x756aa702cd10&gt; object's xml representation will be updated to reflect this removal.</doc>
<status status="PASS" start="2026-10-20T23:19:32.968848" elapsed="0.002719"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:32.971609" elapsed="0.000024"/>
</return>
<arg>${flow}</arg>
<arg>match/ethernet-match</arg>
<doc>Will clean out any existing flow matches in the given &lt;FlowLib.Flow object at 0x756aa702cd10&gt; object</doc>
<status status="PASS" start="2026-10-20T23:19:32.967228" elapsed="0.004473"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:32.980758" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa8aa1620&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:32.980404" elapsed="0.000380"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:32.980987" elapsed="0.000366"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:32.981857" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;TABLE&lt;/output-node-connector&gt;&lt;/out...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:32.981551" elapsed="0.000334"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:32.982061" elapsed="0.000139"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:32.982708" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;TABLE&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match /&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;261&lt;/id&gt;&lt;priority&gt;65535&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:32.982442" elapsed="0.000315"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:32.982796" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>ethernet-match</arg>
<arg>${EMPTY}</arg>
<arg>match</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa702cd10&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:32.979853" elapsed="0.003044"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-10-20T23:19:32.983272" level="INFO">${type} = 0x800</msg>
<var>${type}</var>
<arg>${match_value_dict}</arg>
<arg>type</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="PASS" start="2026-10-20T23:19:32.983098" elapsed="0.000198"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:32.992448" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa8aa1ee0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:32.992057" elapsed="0.000418"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:32.992678" elapsed="0.000343"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:32.993609" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;TABLE&lt;/output-node-connector&gt;&lt;/out...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:32.993274" elapsed="0.000365"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:32.993821" elapsed="0.000122"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:32.994479" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;TABLE&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type /&gt;&lt;/ethernet-match&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;261&lt;/id&gt;&lt;priority&gt;65535&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:32.994187" elapsed="0.000348"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:32.994588" elapsed="0.000036"/>
</return>
<arg>${flow}</arg>
<arg>ethernet-type</arg>
<arg>${EMPTY}</arg>
<arg>match/ethernet-match</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa702cd10&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:32.991598" elapsed="0.003128"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:33.003914" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa8aa1620&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:33.003558" elapsed="0.000382"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:33.004156" elapsed="0.000414"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:33.005093" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;TABLE&lt;/output-node-connector&gt;&lt;/out...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:33.004771" elapsed="0.000350"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:33.005333" elapsed="0.000125"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:33.005951" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;TABLE&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;/ethernet-match&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;261&lt;/id&gt;&lt;priority&gt;65535&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:33.005681" elapsed="0.000318"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:33.006039" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>type</arg>
<arg>${type}</arg>
<arg>match/ethernet-match/ethernet-type</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa702cd10&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:33.003095" elapsed="0.003067"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-10-20T23:19:33.006541" level="INFO">${src} = 00:ab:cd:ef:01:23</msg>
<var>${src}</var>
<arg>${match_value_dict}</arg>
<arg>source</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="PASS" start="2026-10-20T23:19:33.006386" elapsed="0.000179"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:33.015643" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4d1d350&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:33.015273" elapsed="0.000396"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:33.015871" elapsed="0.000362"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:33.016777" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;TABLE&lt;/output-node-connector&gt;&lt;/out...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:33.016450" elapsed="0.000356"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:33.016982" elapsed="0.000120"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:33.017636" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;TABLE&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source /&gt;&lt;/ethernet-match&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;261&lt;/id&gt;&lt;priority&gt;65535&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:33.017366" elapsed="0.000358"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:33.017765" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>ethernet-source</arg>
<arg>${EMPTY}</arg>
<arg>match/ethernet-match</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa702cd10&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:33.014808" elapsed="0.003059"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:33.026768" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4d5ee80&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:33.026415" elapsed="0.000379"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:33.026994" elapsed="0.000376"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:33.027887" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;TABLE&lt;/output-node-connector&gt;&lt;/out...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:33.027566" elapsed="0.000349"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:33.028089" elapsed="0.000139"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:33.028734" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;TABLE&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;/ethernet-match&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;261&lt;/id&gt;&lt;priority&gt;65535&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:33.028464" elapsed="0.000321"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:33.028824" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>address</arg>
<arg>${src}</arg>
<arg>match/ethernet-match/ethernet-source</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa702cd10&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:33.025947" elapsed="0.002978"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-10-20T23:19:33.029289" level="INFO">${dst} = ff:ff:ff:ff:ff:ff</msg>
<var>${dst}</var>
<arg>${match_value_dict}</arg>
<arg>destination</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="PASS" start="2026-10-20T23:19:33.029136" elapsed="0.000192"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:33.038614" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa5723060&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:33.038238" elapsed="0.000402"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:33.038843" elapsed="0.000356"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:33.039747" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;TABLE&lt;/output-node-connector&gt;&lt;/out...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:33.039410" elapsed="0.000365"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:33.039950" elapsed="0.000120"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:33.040596" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;TABLE&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination /&gt;&lt;/ethernet-match&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;261&lt;/id&gt;&lt;priority&gt;65535&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:33.040327" elapsed="0.000321"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:33.040687" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>ethernet-destination</arg>
<arg>${EMPTY}</arg>
<arg>match/ethernet-match</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa702cd10&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:33.037771" elapsed="0.003016"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:33.049837" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4e23e70&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:33.049477" elapsed="0.000418"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:33.050101" elapsed="0.000376"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:33.051007" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;TABLE&lt;/output-node-connector&gt;&lt;/out...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:33.050676" elapsed="0.000359"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:33.051229" elapsed="0.000138"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:33.051858" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;TABLE&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination&gt;&lt;address&gt;ff:ff:ff:ff:ff:ff&lt;/address&gt;&lt;/ethernet-destination&gt;&lt;/ethernet-match&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;261&lt;/id&gt;&lt;priority&gt;65535&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:33.051588" elapsed="0.000323"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:33.051950" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>address</arg>
<arg>${dst}</arg>
<arg>match/ethernet-match/ethernet-destination</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa702cd10&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:33.048970" elapsed="0.003080"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:33.052098" elapsed="0.000022"/>
</return>
<arg>${flow}</arg>
<arg>${ethernet_match_dict}</arg>
<doc>Specific keyword for adding an ethernet match rules where the elements are given
in key/value pairs inside the ${match_value_dict} argument. This keyword will also remove any
existing ethernet-match elements from the flow before adding</doc>
<status status="PASS" start="2026-10-20T23:19:32.966848" elapsed="0.085361"/>
</kw>
<kw name="Set Flow IPv4 Match" owner="FlowLib">
<kw name="Clear Flow Matches" owner="FlowLib">
<kw name="Remove Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:33.056555" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa5716840&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:33.056177" elapsed="0.000404"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Remove Elements" owner="XML">
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Removes all elements matching `xpath` from the `source` structure.</doc>
<status status="PASS" start="2026-10-20T23:19:33.057162" elapsed="0.000274"/>
</kw>
<arg>Remove Elements</arg>
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-20T23:19:33.056776" elapsed="0.000709"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:33.058045" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;TABLE&lt;/output-node-connector&gt;&lt;/out...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:33.057670" elapsed="0.000404"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:33.058263" elapsed="0.000138"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:33.058447" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>match/${match_element}</arg>
<doc>Removes the element at the given ${element_xpath} within the given &lt;FlowLib.Flow object at 0x756aa702cd10&gt;
object. The &lt;FlowLib.Flow object at 0x756aa702cd10&gt; object's xml representation will be updated to reflect this removal.</doc>
<status status="PASS" start="2026-10-20T23:19:33.055716" elapsed="0.002832"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:33.058590" elapsed="0.000023"/>
</return>
<arg>${flow}</arg>
<arg>match/ipv4-source</arg>
<doc>Will clean out any existing flow matches in the given &lt;FlowLib.Flow object at 0x756aa702cd10&gt; object</doc>
<status status="PASS" start="2026-10-20T23:19:33.054095" elapsed="0.004587"/>
</kw>
<kw name="Clear Flow Matches" owner="FlowLib">
<kw name="Remove Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:33.061426" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa8aa1710&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:33.061026" elapsed="0.000426"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Remove Elements" owner="XML">
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Removes all elements matching `xpath` from the `source` structure.</doc>
<status status="PASS" start="2026-10-20T23:19:33.062091" elapsed="0.000291"/>
</kw>
<arg>Remove Elements</arg>
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-20T23:19:33.061703" elapsed="0.000730"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:33.062959" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;TABLE&lt;/output-node-connector&gt;&lt;/out...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:33.062631" elapsed="0.000356"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:33.063213" elapsed="0.000140"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:33.063399" elapsed="0.000028"/>
</return>
<arg>${flow}</arg>
<arg>match/${match_element}</arg>
<doc>Removes the element at the given ${element_xpath} within the given &lt;FlowLib.Flow object at 0x756aa702cd10&gt;
object. The &lt;FlowLib.Flow object at 0x756aa702cd10&gt; object's xml representation will be updated to reflect this removal.</doc>
<status status="PASS" start="2026-10-20T23:19:33.060643" elapsed="0.002858"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:33.063543" elapsed="0.000024"/>
</return>
<arg>${flow}</arg>
<arg>match/ipv4-destination</arg>
<doc>Will clean out any existing flow matches in the given &lt;FlowLib.Flow object at 0x756aa702cd10&gt; object</doc>
<status status="PASS" start="2026-10-20T23:19:33.058862" elapsed="0.004775"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-10-20T23:19:33.063982" level="INFO">${src} = 11.3.0.0/16</msg>
<var>${src}</var>
<arg>${match_value_dict}</arg>
<arg>source</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="PASS" start="2026-10-20T23:19:33.063831" elapsed="0.000175"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:33.073051" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa8aa1670&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:33.072632" elapsed="0.000446"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:33.073297" elapsed="0.000407"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:33.074246" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;TABLE&lt;/output-node-connector&gt;&lt;/out...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:33.073905" elapsed="0.000370"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:33.074470" elapsed="0.000122"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:33.075083" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;TABLE&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination&gt;&lt;address&gt;ff:ff:ff:ff:ff:ff&lt;/address&gt;&lt;/ethernet-destination&gt;&lt;/ethernet-match&gt;&lt;ipv4-source&gt;11.3.0.0/16&lt;/ipv4-source&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;261&lt;/id&gt;&lt;priority&gt;65535&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:33.074816" elapsed="0.000338"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:33.075195" elapsed="0.000028"/>
</return>
<arg>${flow}</arg>
<arg>ipv4-source</arg>
<arg>${src}</arg>
<arg>match</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa702cd10&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:33.072182" elapsed="0.003116"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-10-20T23:19:33.075681" level="INFO">${dst} = 99.0.0.0/8</msg>
<var>${dst}</var>
<arg>${match_value_dict}</arg>
<arg>destination</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="PASS" start="2026-10-20T23:19:33.075528" elapsed="0.000177"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:33.084833" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa5716250&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:33.084460" elapsed="0.000400"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:33.085071" elapsed="0.000375"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:33.086052" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;TABLE&lt;/output-node-connector&gt;&lt;/out...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:33.085643" elapsed="0.000439"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:33.086283" elapsed="0.000142"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:33.086925" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;TABLE&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination&gt;&lt;address&gt;ff:ff:ff:ff:ff:ff&lt;/address&gt;&lt;/ethernet-destination&gt;&lt;/ethernet-match&gt;&lt;ipv4-source&gt;11.3.0.0/16&lt;/ipv4-source&gt;&lt;ipv4-destination&gt;99.0.0.0/8&lt;/ipv4-destination&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;261&lt;/id&gt;&lt;priority&gt;65535&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:33.086656" elapsed="0.000322"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:33.087018" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>ipv4-destination</arg>
<arg>${dst}</arg>
<arg>match</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa702cd10&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:33.083988" elapsed="0.003180"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:33.087222" elapsed="0.000025"/>
</return>
<arg>${flow}</arg>
<arg>${ipv4_match_dict}</arg>
<doc>Specific keyword for adding an ipv4 match rules where the elements are given
in key/value pairs inside the ${match_value_dict} argument. This keyword will also remove any
existing ipv4 match elements from the flow before adding</doc>
<status status="PASS" start="2026-10-20T23:19:33.053735" elapsed="0.033601"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:33.087841" level="INFO">Flow XML is &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;TABLE&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination&gt;&lt;address&gt;ff:ff:ff:ff:ff:ff&lt;/address&gt;&lt;/ethernet-destination&gt;&lt;/ethernet-match&gt;&lt;ipv4-source&gt;11.3.0.0/16&lt;/ipv4-source&gt;&lt;ipv4-destination&gt;99.0.0.0/8&lt;/ipv4-destination&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;261&lt;/id&gt;&lt;priority&gt;65535&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>Flow XML is ${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:33.087561" elapsed="0.000334"/>
</kw>
<kw name="Call Method" owner="BuiltIn">
<arg>${test_switch}</arg>
<arg>create_flow_match_elements</arg>
<arg>${flow.xml}</arg>
<doc>Calls the named method of the given object with the provided arguments.</doc>
<status status="PASS" start="2026-10-20T23:19:33.088083" elapsed="0.000410"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:33.089018" level="INFO">['dl_src=00:ab:cd:ef:01:23,dl_dst=ff:ff:ff:ff:ff:ff,nw_src=11.3.0.0/16,nw_dst=99.0.0.0/8 actions=TABLE', 'table=200']</msg>
<arg>${test_switch.flow_validations}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:33.088740" elapsed="0.000322"/>
</kw>
<kw name="Get Switch Datapath ID" owner="SwitchUtils">
<kw name="Configure Connection Index And Prompt Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${switch.connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-10-20T23:19:33.090492" elapsed="0.000165"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:33.090199" elapsed="0.000493"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:33.090178" elapsed="0.000539"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Set Client Configuration" owner="SSHLibrary">
<arg>prompt=${switch.mgmt_prompt}</arg>
<arg>timeout=5s</arg>
<doc>Update the `configuration` of the current connection.</doc>
<status status="PASS" start="2026-10-20T23:19:33.091013" elapsed="0.000304"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:33.090768" elapsed="0.000587"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:33.090753" elapsed="0.000626"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Switch Connection" owner="Telnet">
<arg>${switch.connection_index}</arg>
<doc>Switches between active connections using an index or an alias.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:33.091677" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:33.091430" elapsed="0.000298"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:33.091415" elapsed="0.000335"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Set Prompt" owner="Telnet">
<arg>${switch.mgmt_prompt}</arg>
<arg>True</arg>
<doc>Sets the prompt used by the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:33.092034" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:33.091799" elapsed="0.000287"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:33.091784" elapsed="0.000325"/>
</if>
<arg>${switch}</arg>
<doc>when using multiple switch connections (e.g. more than one switch device) this keyword will switch the current connection index and prompt so that the following
Read or Write actions happen on the correct device.</doc>
<status status="PASS" start="2026-10-20T23:19:33.089810" elapsed="0.002364"/>
</kw>
<kw name="Read Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Read" owner="SSHLibrary">
<doc>Consumes and returns everything available on the server output.</doc>
<status status="PASS" start="2026-10-20T23:19:33.092857" elapsed="0.000120"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:33.092617" elapsed="0.000391"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:33.092601" elapsed="0.000430"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Read" owner="Telnet">
<doc>Reads everything that is currently available in the output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:33.093344" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:33.093080" elapsed="0.000317"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:33.093065" elapsed="0.000360"/>
</if>
<arg>${switch}</arg>
<doc>Wraps the Read command so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:33.092407" elapsed="0.001061"/>
</kw>
<kw name="Execute Command Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:19:33.094423" level="INFO">Executing command '/sbin/ifconfig s1 | grep -o -E "([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}"'.</msg>
<msg time="2026-10-20T23:19:33.107582" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:19:33.107674" level="INFO">${output} = e2:07:e3:56:6d:42</msg>
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:19:33.094301" elapsed="0.013397"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:33.094014" elapsed="0.013719"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${output}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:33.107988" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:33.107758" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:33.093997" elapsed="0.014093"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Execute Command" owner="Telnet">
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes the given `command` and reads, logs, and returns resulting output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:33.108434" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:33.108161" elapsed="0.000360"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:33.109002" level="INFO">${output} = e2:07:e3:56:6d:42</msg>
<var>${output}</var>
<arg>${output}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:33.108726" elapsed="0.000300"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:33.108546" elapsed="0.000513"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:33.108144" elapsed="0.000935"/>
</if>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-20T23:19:33.109111" elapsed="0.000045"/>
</return>
<msg time="2026-10-20T23:19:33.109275" level="INFO">${switch.datapath_id_output_string} = e2:07:e3:56:6d:42</msg>
<var>${switch.datapath_id_output_string}</var>
<arg>${switch}</arg>
<arg>${switch.datapath_id_output_command}</arg>
<doc>Wraps the Execute Command keyword so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:33.093726" elapsed="0.015573"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:33.109825" level="INFO">e2:07:e3:56:6d:42</msg>
<arg>${switch.datapath_id_output_string}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:33.109548" elapsed="0.000319"/>
</kw>
<kw name="Call Method" owner="BuiltIn">
<arg>${switch}</arg>
<arg>update_datapath_id</arg>
<doc>Calls the named method of the given object with the provided arguments.</doc>
<status status="PASS" start="2026-10-20T23:19:33.110047" elapsed="0.000287"/>
</kw>
<return>
<value>${switch.datapath_id}</value>
<status status="PASS" start="2026-10-20T23:19:33.110379" elapsed="0.000027"/>
</return>
<msg time="2026-10-20T23:19:33.110556" level="INFO">${dpid_id} = 248523506740546</msg>
<var>${dpid_id}</var>
<arg>${test_switch}</arg>
<doc>Using the connection index for the given switch, will execute the command string
"datapath_id_output_command" which will store the output in switch.datapath_id_output_string.
The switch object method "update_datapath_id" is called which is assumed to place the ODL
friendly (decimal) version of the datapath id in to switch.datapath_id and the value is also
returned from this keyword.</doc>
<status status="PASS" start="2026-10-20T23:19:33.089288" elapsed="0.021292"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Add Flow To Controller And Verify" owner="FlowLib">
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:19:33.115524" level="INFO">PUT Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=261 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=261 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Content-Length': '668', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;TABLE&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination&gt;&lt;address&gt;ff:ff:ff:ff:ff:ff&lt;/address&gt;&lt;/ethernet-destination&gt;&lt;/ethernet-match&gt;&lt;ipv4-source&gt;11.3.0.0/16&lt;/ipv4-source&gt;&lt;ipv4-destination&gt;99.0.0.0/8&lt;/ipv4-destination&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;261&lt;/id&gt;&lt;priority&gt;65535&lt;/priority&gt;&lt;/flow&gt; 
 </msg>
<msg time="2026-10-20T23:19:33.115581" level="INFO">PUT Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=261 
 status=404, reason=Not Found 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-10-20T23:19:33.115682" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=261</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=${node_id}/flow-node-inventory:table=${table_id}/flow=${flow_id}</arg>
<arg>headers=${HEADERS_XML}</arg>
<arg>data=${flow_body}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:19:33.111841" elapsed="0.004220">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=261</status>
</kw>
<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-10-20T23:19:33.116344" elapsed="0.000023"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=${node_id}/flow-node-inventory:table=${table_id}/flow=${flow_id}?content=config</arg>
<arg>headers=${ACCEPT_XML}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:33.116521" elapsed="0.000019"/>
</kw>
<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-10-20T23:19:33.116762" elapsed="0.000019"/>
</kw>
<kw name="Compare Xml" owner="Common">
<arg>${flow_body}</arg>
<arg>${resp.text}</arg>
<doc>compare the two XML files to see if they contain the same data
but could be if different order.
It just split the xml in to lines and just check the line is in
the other file</doc>
<status status="NOT RUN" start="2026-10-20T23:19:33.116948" elapsed="0.000018"/>
</kw>
<arg>${flow.xml}</arg>
<arg>openflow%3A${dpid_id}</arg>
<arg>${flow.table_id}</arg>
<arg>${flow.id}</arg>
<doc>Push flow through REST-API and verify in data-store</doc>
<status status="FAIL" start="2026-10-20T23:19:33.111299" elapsed="0.005762">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=261</status>
</kw>
<kw name="Add Flow To Controller And Verify" owner="FlowLib">
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:19:34.125573" level="INFO">PUT Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=261 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=261 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Content-Length': '668', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;TABLE&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination&gt;&lt;address&gt;ff:ff:ff:ff:ff:ff&lt;/address&gt;&lt;/ethernet-destination&gt;&lt;/ethernet-match&gt;&lt;ipv4-source&gt;11.3.0.0/16&lt;/ipv4-source&gt;&lt;ipv4-destination&gt;99.0.0.0/8&lt;/ipv4-destination&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;261&lt;/id&gt;&lt;priority&gt;65535&lt;/priority&gt;&lt;/flow&gt; 
 </msg>
<msg time="2026-10-20T23:19:34.125810" level="INFO">PUT Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=261 
 status=404, reason=Not Found 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-10-20T23:19:34.126014" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=261</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=${node_id}/flow-node-inventory:table=${table_id}/flow=${flow_id}</arg>
<arg>headers=${HEADERS_XML}</arg>
<arg>data=${flow_body}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:19:34.119376" elapsed="0.007431">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=261</status>
</kw>
<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-10-20T23:19:34.127481" elapsed="0.000051"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=${node_id}/flow-node-inventory:table=${table_id}/flow=${flow_id}?content=config</arg>
<arg>headers=${ACCEPT_XML}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:34.127889" elapsed="0.000045"/>
</kw>
<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-10-20T23:19:34.128986" elapsed="0.000049"/>
</kw>
<kw name="Compare Xml" owner="Common">
<arg>${flow_body}</arg>
<arg>${resp.text}</arg>
<doc>compare the two XML files to see if they contain the same data
but could be if different order.
It just split the xml in to lines and just check the line is in
the other file</doc>
<status status="NOT RUN" start="2026-10-20T23:19:34.129471" elapsed="0.000045"/>
</kw>
<arg>${flow.xml}</arg>
<arg>openflow%3A${dpid_id}</arg>
<arg>${flow.table_id}</arg>
<arg>${flow.id}</arg>
<doc>Push flow through REST-API and verify in data-store</doc>
<status status="FAIL" start="2026-10-20T23:19:34.117888" elapsed="0.011834">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=261</status>
</kw>
<kw name="Add Flow To Controller And Verify" owner="FlowLib">
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:19:35.137995" level="INFO">PUT Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=261 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=261 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Content-Length': '668', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;TABLE&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination&gt;&lt;address&gt;ff:ff:ff:ff:ff:ff&lt;/address&gt;&lt;/ethernet-destination&gt;&lt;/ethernet-match&gt;&lt;ipv4-source&gt;11.3.0.0/16&lt;/ipv4-source&gt;&lt;ipv4-destination&gt;99.0.0.0/8&lt;/ipv4-destination&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;261&lt;/id&gt;&lt;priority&gt;65535&lt;/priority&gt;&lt;/flow&gt; 
 </msg>
<msg time="2026-10-20T23:19:35.138130" level="INFO">PUT Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=261 
 status=404, reason=Not Found 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-10-20T23:19:35.138384" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=261</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=${node_id}/flow-node-inventory:table=${table_id}/flow=${flow_id}</arg>
<arg>headers=${HEADERS_XML}</arg>
<arg>data=${flow_body}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:19:35.131964" elapsed="0.007168">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=261</status>
</kw>
<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-10-20T23:19:35.139786" elapsed="0.000049"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=${node_id}/flow-node-inventory:table=${table_id}/flow=${flow_id}?content=config</arg>
<arg>headers=${ACCEPT_XML}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:35.140178" elapsed="0.000069"/>
</kw>
<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-10-20T23:19:35.140784" elapsed="0.000045"/>
</kw>
<kw name="Compare Xml" owner="Common">
<arg>${flow_body}</arg>
<arg>${resp.text}</arg>
<doc>compare the two XML files to see if they contain the same data
but could be if different order.
It just split the xml in to lines and just check the line is in
the other file</doc>
<status status="NOT RUN" start="2026-10-20T23:19:35.141225" elapsed="0.000044"/>
</kw>
<arg>${flow.xml}</arg>
<arg>openflow%3A${dpid_id}</arg>
<arg>${flow.table_id}</arg>
<arg>${flow.id}</arg>
<doc>Push flow through REST-API and verify in data-store</doc>
<status status="FAIL" start="2026-10-20T23:19:35.130579" elapsed="0.010921">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=261</status>
</kw>
<kw name="Add Flow To Controller And Verify" owner="FlowLib">
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:19:36.149801" level="INFO">PUT Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=261 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=261 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Content-Length': '668', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;TABLE&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination&gt;&lt;address&gt;ff:ff:ff:ff:ff:ff&lt;/address&gt;&lt;/ethernet-destination&gt;&lt;/ethernet-match&gt;&lt;ipv4-source&gt;11.3.0.0/16&lt;/ipv4-source&gt;&lt;ipv4-destination&gt;99.0.0.0/8&lt;/ipv4-destination&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;261&lt;/id&gt;&lt;priority&gt;65535&lt;/priority&gt;&lt;/flow&gt; 
 </msg>
<msg time="2026-10-20T23:19:36.150067" level="INFO">PUT Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=261 
 status=404, reason=Not Found 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-10-20T23:19:36.150299" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=261</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=${node_id}/flow-node-inventory:table=${table_id}/flow=${flow_id}</arg>
<arg>headers=${HEADERS_XML}</arg>
<arg>data=${flow_body}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:19:36.143751" elapsed="0.007337">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=261</status>
</kw>
<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-10-20T23:19:36.151757" elapsed="0.000049"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=${node_id}/flow-node-inventory:table=${table_id}/flow=${flow_id}?content=config</arg>
<arg>headers=${ACCEPT_XML}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:36.152149" elapsed="0.000042"/>
</kw>
<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-10-20T23:19:36.152740" elapsed="0.000043"/>
</kw>
<kw name="Compare Xml" owner="Common">
<arg>${flow_body}</arg>
<arg>${resp.text}</arg>
<doc>compare the two XML files to see if they contain the same data
but could be if different order.
It just split the xml in to lines and just check the line is in
the other file</doc>
<status status="NOT RUN" start="2026-10-20T23:19:36.153156" elapsed="0.000041"/>
</kw>
<arg>${flow.xml}</arg>
<arg>openflow%3A${dpid_id}</arg>
<arg>${flow.table_id}</arg>
<arg>${flow.id}</arg>
<doc>Push flow through REST-API and verify in data-store</doc>
<status status="FAIL" start="2026-10-20T23:19:36.142362" elapsed="0.011083">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=261</status>
</kw>
<msg time="2026-10-20T23:19:36.153649" level="FAIL">Keyword 'Add Flow To Controller And Verify' failed after retrying for 3 seconds. The last error was: HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=261</msg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Add Flow To Controller And Verify</arg>
<arg>${flow.xml}</arg>
<arg>openflow%3A${dpid_id}</arg>
<arg>${flow.table_id}</arg>
<arg>${flow.id}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-10-20T23:19:33.110802" elapsed="3.043041">Keyword 'Add Flow To Controller And Verify' failed after retrying for 3 seconds. The last error was: HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=261</status>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>3s</arg>
<arg>1s</arg>
<arg>Validate Switch Output</arg>
<arg>${test_switch}</arg>
<arg>${test_switch.dump_all_flows}</arg>
<arg>${test_switch.flow_validations}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:36.154419" elapsed="0.000070"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>3s</arg>
<arg>1s</arg>
<arg>Remove Flow From Controller And Verify</arg>
<arg>openflow%3A${dpid_id}</arg>
<arg>${flow.table_id}</arg>
<arg>${flow.id}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:36.154986" elapsed="0.000042"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>3s</arg>
<arg>1s</arg>
<arg>Validate Switch Output</arg>
<arg>${test_switch}</arg>
<arg>${test_switch.dump_all_flows}</arg>
<arg>${test_switch.flow_validations}</arg>
<arg>false</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:36.155549" elapsed="0.000042"/>
</kw>
<arg>${TEST_NAME}</arg>
<arg>200</arg>
<arg>261</arg>
<arg>65535</arg>
<status status="FAIL" start="2026-10-20T23:19:32.791449" elapsed="3.364347">Keyword 'Add Flow To Controller And Verify' failed after retrying for 3 seconds. The last error was: HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=261</status>
</kw>
<doc>OF1.3: OFPP_TABLE = 0xfffffff9, /* Submit the packet to the first flow table NB: This destination port can only be used in packet-out messages. */</doc>
<tag>table</tag>
<status status="FAIL" start="2026-10-20T23:19:32.790022" elapsed="3.366104">Keyword 'Add Flow To Controller And Verify' failed after retrying for 3 seconds. The last error was: HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=261</status>
</test>
<test id="s1-s4-s2-t3" name="NORMAL" line="62">
<kw name="Create And Remove Flow">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:19:36.160052" level="INFO">${ethernet_match_dict} = {'type': '0x800', 'destination': 'ff:ff:ff:ff:ff:ff', 'source': '00:ab:cd:ef:01:23'}</msg>
<var>${ethernet_match_dict}</var>
<arg>type=${eth_type}</arg>
<arg>destination=${eth_dst}</arg>
<arg>source=${eth_src}</arg>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:19:36.158985" elapsed="0.001126"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:19:36.161511" level="INFO">${ipv4_match_dict} = {'source': '11.3.0.0/16', 'destination': '99.0.0.0/8'}</msg>
<var>${ipv4_match_dict}</var>
<arg>source=${ipv4_src}</arg>
<arg>destination=${ipv4_dst}</arg>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:19:36.160648" elapsed="0.000919"/>
</kw>
<kw name="Create Inventory Flow" owner="FlowLib">
<kw name="Make Inventory Flow" owner="FlowLib">
<msg time="2026-10-20T23:19:36.162906" level="INFO">${flow} = &lt;FlowLib.Flow object at 0x756aa709abd0&gt;</msg>
<var>${flow}</var>
<doc>Robot Keyword to create and return an instance of the Flow
class.</doc>
<status status="PASS" start="2026-10-20T23:19:36.162641" elapsed="0.000321"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:36.163052" elapsed="0.000066"/>
</return>
<msg time="2026-10-20T23:19:36.163394" level="INFO">${flow} = &lt;FlowLib.Flow object at 0x756aa709abd0&gt;</msg>
<var>${flow}</var>
<doc>Calls FlowLib.Make_Inventory_Flow function and initializes and sanitizes
the basic flow elements that can be given to flow:inventory</doc>
<status status="PASS" start="2026-10-20T23:19:36.161942" elapsed="0.001507"/>
</kw>
<kw name="Set &quot;${flow}&quot; &quot;table_id&quot; With &quot;${table_id}&quot;" owner="FlowLib" source_name="Set &quot;${flow}&quot; &quot;${property}&quot; With &quot;${property_val}&quot;">
<if>
<branch type="IF" condition="&quot;table_id&quot; != &quot;${property}&quot; and &quot;cookie_mask&quot; != &quot;${property}&quot;">
<kw name="Replace String" owner="String">
<var>${property}</var>
<arg>${property}</arg>
<arg>_</arg>
<arg>-</arg>
<doc>Replaces `search_for` in the given `string` with `replace_with`.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:36.168792" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:36.168062" elapsed="0.000935"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:36.170107" level="INFO">${property} = table_id</msg>
<var>${property}</var>
<arg>${property}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:36.169504" elapsed="0.000658"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:36.169056" elapsed="0.001200"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:36.168021" elapsed="0.002281"/>
</if>
<kw name="Remove Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:36.175444" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa5717d80&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:36.174554" elapsed="0.000948"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Remove Elements" owner="XML">
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Removes all elements matching `xpath` from the `source` structure.</doc>
<status status="PASS" start="2026-10-20T23:19:36.176823" elapsed="0.000617"/>
</kw>
<arg>Remove Elements</arg>
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-20T23:19:36.175941" elapsed="0.001613"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:36.178695" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:36.177972" elapsed="0.000782"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:36.179146" elapsed="0.000326"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:36.179573" elapsed="0.000059"/>
</return>
<arg>${flow}</arg>
<arg>${property}</arg>
<doc>Removes the element at the given ${element_xpath} within the given &lt;FlowLib.Flow object at 0x756aa709abd0&gt;
object. The &lt;FlowLib.Flow object at 0x756aa709abd0&gt; object's xml representation will be updated to reflect this removal.</doc>
<status status="PASS" start="2026-10-20T23:19:36.173660" elapsed="0.006136"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:36.195167" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa5715440&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:36.194713" elapsed="0.000489"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:36.195522" elapsed="0.000472"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:36.196686" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:36.196281" elapsed="0.000442"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:36.196971" elapsed="0.000179"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:36.197874" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:36.197501" elapsed="0.000434"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:36.197988" elapsed="0.000038"/>
</return>
<arg>${flow}</arg>
<arg>${property}</arg>
<arg>${property_val}</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa709abd0&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:36.194059" elapsed="0.004069"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>${property}</arg>
<arg>${property_val}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:36.198417" elapsed="0.000186"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:36.198665" elapsed="0.000034"/>
</return>
<doc>Embedded variables to make higher level keywords more readable.
There are some cases where the python attribute uses an underscore,
but a hyphen needs to be used. This seems inconsistent, and may need
to be looked at from the openflow plugin perspective.</doc>
<status status="PASS" start="2026-10-20T23:19:36.167476" elapsed="0.031323"/>
</kw>
<kw name="Set &quot;${flow}&quot; &quot;id&quot; With &quot;${flow_id}&quot;" owner="FlowLib" source_name="Set &quot;${flow}&quot; &quot;${property}&quot; With &quot;${property_val}&quot;">
<if>
<branch type="IF" condition="&quot;table_id&quot; != &quot;${property}&quot; and &quot;cookie_mask&quot; != &quot;${property}&quot;">
<kw name="Replace String" owner="String">
<msg time="2026-10-20T23:19:36.202011" level="INFO">${property} = id</msg>
<var>${property}</var>
<arg>${property}</arg>
<arg>_</arg>
<arg>-</arg>
<doc>Replaces `search_for` in the given `string` with `replace_with`.</doc>
<status status="PASS" start="2026-10-20T23:19:36.201745" elapsed="0.000301"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:36.201379" elapsed="0.000721"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${property}</var>
<arg>${property}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:36.202426" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:36.202133" elapsed="0.000366"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:36.201355" elapsed="0.001172"/>
</if>
<kw name="Remove Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:36.205756" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa5715b70&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:36.205274" elapsed="0.000517"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Remove Elements" owner="XML">
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Removes all elements matching `xpath` from the `source` structure.</doc>
<status status="PASS" start="2026-10-20T23:19:36.206616" elapsed="0.000346"/>
</kw>
<arg>Remove Elements</arg>
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-20T23:19:36.206062" elapsed="0.000970"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:36.207765" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:36.207375" elapsed="0.000427"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:36.208048" elapsed="0.000184"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:36.208296" elapsed="0.000057"/>
</return>
<arg>${flow}</arg>
<arg>${property}</arg>
<doc>Removes the element at the given ${element_xpath} within the given &lt;FlowLib.Flow object at 0x756aa709abd0&gt;
object. The &lt;FlowLib.Flow object at 0x756aa709abd0&gt; object's xml representation will be updated to reflect this removal.</doc>
<status status="PASS" start="2026-10-20T23:19:36.204722" elapsed="0.003734"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:36.218832" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa57177e0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:36.218507" elapsed="0.000355"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:36.219063" elapsed="0.000365"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:36.219905" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;361&lt;/id&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:36.219624" elapsed="0.000308"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:36.220109" elapsed="0.000138"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:36.220755" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;361&lt;/id&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:36.220490" elapsed="0.000309"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:36.220837" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>${property}</arg>
<arg>${property_val}</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa709abd0&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:36.218041" elapsed="0.002896"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>${property}</arg>
<arg>${property_val}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:36.221117" elapsed="0.000147"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:36.221322" elapsed="0.000027"/>
</return>
<doc>Embedded variables to make higher level keywords more readable.
There are some cases where the python attribute uses an underscore,
but a hyphen needs to be used. This seems inconsistent, and may need
to be looked at from the openflow plugin perspective.</doc>
<status status="PASS" start="2026-10-20T23:19:36.200988" elapsed="0.020434"/>
</kw>
<kw name="Set &quot;${flow}&quot; &quot;priority&quot; With &quot;${priority}&quot;" owner="FlowLib" source_name="Set &quot;${flow}&quot; &quot;${property}&quot; With &quot;${property_val}&quot;">
<if>
<branch type="IF" condition="&quot;table_id&quot; != &quot;${property}&quot; and &quot;cookie_mask&quot; != &quot;${property}&quot;">
<kw name="Replace String" owner="String">
<msg time="2026-10-20T23:19:36.223705" level="INFO">${property} = priority</msg>
<var>${property}</var>
<arg>${property}</arg>
<arg>_</arg>
<arg>-</arg>
<doc>Replaces `search_for` in the given `string` with `replace_with`.</doc>
<status status="PASS" start="2026-10-20T23:19:36.223524" elapsed="0.000205"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:36.223242" elapsed="0.000524"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${property}</var>
<arg>${property}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:36.223972" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:36.223789" elapsed="0.000233"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:36.223208" elapsed="0.000834"/>
</if>
<kw name="Remove Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:36.226245" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa5717fb0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:36.225892" elapsed="0.000380"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Remove Elements" owner="XML">
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Removes all elements matching `xpath` from the `source` structure.</doc>
<status status="PASS" start="2026-10-20T23:19:36.226856" elapsed="0.000247"/>
</kw>
<arg>Remove Elements</arg>
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-20T23:19:36.226484" elapsed="0.000669"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:36.227647" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;361&lt;/id&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:36.227367" elapsed="0.000307"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:36.227852" elapsed="0.000130"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:36.228027" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>${property}</arg>
<doc>Removes the element at the given ${element_xpath} within the given &lt;FlowLib.Flow object at 0x756aa709abd0&gt;
object. The &lt;FlowLib.Flow object at 0x756aa709abd0&gt; object's xml representation will be updated to reflect this removal.</doc>
<status status="PASS" start="2026-10-20T23:19:36.225513" elapsed="0.002614"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:36.238004" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa70e68e0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:36.237674" elapsed="0.000355"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:36.238246" elapsed="0.000358"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:36.239083" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;361&lt;/id&gt;&lt;priority&gt;9&lt;/priority&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:36.238798" elapsed="0.000311"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:36.239300" elapsed="0.000137"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:36.239924" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;361&lt;/id&gt;&lt;priority&gt;9&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:36.239659" elapsed="0.000309"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:36.240006" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>${property}</arg>
<arg>${property_val}</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa709abd0&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:36.237205" elapsed="0.002903"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>${property}</arg>
<arg>${property_val}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:36.240320" elapsed="0.000134"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:36.240499" elapsed="0.000025"/>
</return>
<doc>Embedded variables to make higher level keywords more readable.
There are some cases where the python attribute uses an underscore,
but a hyphen needs to be used. This seems inconsistent, and may need
to be looked at from the openflow plugin perspective.</doc>
<status status="PASS" start="2026-10-20T23:19:36.222977" elapsed="0.017618"/>
</kw>
<kw name="Clear Flow Actions" owner="FlowLib">
<kw name="Remove Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:36.243065" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa8aa16c0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:36.242736" elapsed="0.000354"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Remove Elements" owner="XML">
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Removes all elements matching `xpath` from the `source` structure.</doc>
<status status="PASS" start="2026-10-20T23:19:36.243689" elapsed="0.000258"/>
</kw>
<arg>Remove Elements</arg>
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-20T23:19:36.243300" elapsed="0.000698"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:36.244505" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;361&lt;/id&gt;&lt;priority&gt;9&lt;/priority&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:36.244184" elapsed="0.000348"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:36.244707" elapsed="0.000119"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:36.244870" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>instructions/instruction</arg>
<doc>Removes the element at the given ${element_xpath} within the given &lt;FlowLib.Flow object at 0x756aa709abd0&gt;
object. The &lt;FlowLib.Flow object at 0x756aa709abd0&gt; object's xml representation will be updated to reflect this removal.</doc>
<status status="PASS" start="2026-10-20T23:19:36.242372" elapsed="0.002597"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:36.245012" elapsed="0.000022"/>
</return>
<arg>${flow}</arg>
<doc>Will clean out any existing flow actions in the given &lt;FlowLib.Flow object at 0x756aa709abd0&gt; object</doc>
<status status="PASS" start="2026-10-20T23:19:36.240772" elapsed="0.004331"/>
</kw>
<kw name="Set Flow Output Action" owner="FlowLib">
<kw name="Set Flow Action" owner="FlowLib">
<kw name="Remove Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:36.248105" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa5716e30&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:36.247780" elapsed="0.000351"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Remove Elements" owner="XML">
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Removes all elements matching `xpath` from the `source` structure.</doc>
<status status="PASS" start="2026-10-20T23:19:36.248737" elapsed="0.000245"/>
</kw>
<arg>Remove Elements</arg>
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-20T23:19:36.248357" elapsed="0.000676"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:36.249543" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;361&lt;/id&gt;&lt;priority&gt;9&lt;/priority&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:36.249233" elapsed="0.000337"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:36.249745" elapsed="0.000119"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:36.249909" elapsed="0.000026"/>
</return>
<arg>${flow}</arg>
<arg>instruction</arg>
<doc>Removes the element at the given ${element_xpath} within the given &lt;FlowLib.Flow object at 0x756aa709abd0&gt;
object. The &lt;FlowLib.Flow object at 0x756aa709abd0&gt; object's xml representation will be updated to reflect this removal.</doc>
<status status="PASS" start="2026-10-20T23:19:36.247419" elapsed="0.002627"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:36.259230" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa8aa16c0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:36.258877" elapsed="0.000380"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:36.259474" elapsed="0.000337"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:36.260327" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction /&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;361&lt;/id&gt;&lt;priority&gt;9&lt;/priority&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:36.260009" elapsed="0.000347"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:36.260533" elapsed="0.000121"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:36.261138" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction /&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;361&lt;/id&gt;&lt;priority&gt;9&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:36.260875" elapsed="0.000306"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:36.261242" elapsed="0.000028"/>
</return>
<arg>${flow}</arg>
<arg>instruction</arg>
<arg>${EMPTY}</arg>
<arg>instructions</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa709abd0&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:36.258428" elapsed="0.002932"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:36.270334" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa5715df0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:36.269963" elapsed="0.000399"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:36.270576" elapsed="0.000373"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:36.271490" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;361&lt;/id&gt;&lt;priority&gt;9&lt;/priority&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:36.271149" elapsed="0.000371"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:36.271700" elapsed="0.000125"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:36.272364" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;361&lt;/id&gt;&lt;priority&gt;9&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:36.272047" elapsed="0.000365"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:36.272454" elapsed="0.000032"/>
</return>
<arg>${flow}</arg>
<arg>order</arg>
<arg>${instruction_order}</arg>
<arg>instructions/instruction</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa709abd0&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:36.269510" elapsed="0.003055"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:36.281633" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa5717650&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:36.281278" elapsed="0.000382"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:36.281870" elapsed="0.000357"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:36.282734" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions /&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;361&lt;/id&gt;&lt;priority&gt;9&lt;/priorit...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:36.282439" elapsed="0.000323"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:36.282939" elapsed="0.000122"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:36.283580" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions /&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;361&lt;/id&gt;&lt;priority&gt;9&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:36.283301" elapsed="0.000325"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:36.283712" elapsed="0.000029"/>
</return>
<arg>${flow}</arg>
<arg>apply-actions</arg>
<arg>${EMPTY}</arg>
<arg>instructions/instruction</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa709abd0&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:36.280807" elapsed="0.003011"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:36.292835" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa57158f0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:36.292502" elapsed="0.000359"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:36.293061" elapsed="0.000376"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:36.293928" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action /&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;361&lt;...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:36.293634" elapsed="0.000323"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:36.294133" elapsed="0.000135"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:36.294781" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action /&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;361&lt;/id&gt;&lt;priority&gt;9&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:36.294510" elapsed="0.000317"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:36.294866" elapsed="0.000028"/>
</return>
<arg>${flow}</arg>
<arg>action</arg>
<arg>${EMPTY}</arg>
<arg>instructions/instruction/apply-actions</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa709abd0&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:36.292030" elapsed="0.002942"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:36.304190" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa8aa16c0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:36.303847" elapsed="0.000384"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:36.304451" elapsed="0.000346"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:36.305321" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:36.304994" elapsed="0.000357"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:36.305528" elapsed="0.000123"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:36.306135" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;361&lt;/id&gt;&lt;priority&gt;9&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:36.305870" elapsed="0.000311"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:36.306232" elapsed="0.000029"/>
</return>
<arg>${flow}</arg>
<arg>order</arg>
<arg>${action_order}</arg>
<arg>instructions/instruction/apply-actions/action</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa709abd0&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:36.303405" elapsed="0.002947"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:36.315374" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa5715210&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:36.315005" elapsed="0.000395"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:36.315601" elapsed="0.000340"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:36.316467" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action /&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:36.316135" elapsed="0.000361"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:36.316700" elapsed="0.000190"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:36.317411" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action /&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;361&lt;/id&gt;&lt;priority&gt;9&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:36.317112" elapsed="0.000346"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:36.317496" elapsed="0.000028"/>
</return>
<arg>${flow}</arg>
<arg>${action}</arg>
<arg>${action_val}</arg>
<arg>instructions/instruction/apply-actions/action</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa709abd0&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:36.314561" elapsed="0.003036"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:36.317646" elapsed="0.000023"/>
</return>
<arg>${flow}</arg>
<arg>${instruction_order}</arg>
<arg>${action_order}</arg>
<arg>output-action</arg>
<doc>Will remove the instruction element first, then add the proper xml structure
to implement the action as given in the arguments</doc>
<status status="PASS" start="2026-10-20T23:19:36.245695" elapsed="0.072044"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:36.326766" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa5717600&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:36.326421" elapsed="0.000370"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:36.326993" elapsed="0.000375"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:36.327870" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;NORMAL&lt;/output-node-connector&gt;&lt;/ou...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:36.327566" elapsed="0.000332"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:36.328073" elapsed="0.000120"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:36.328716" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;NORMAL&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;361&lt;/id&gt;&lt;priority&gt;9&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:36.328448" elapsed="0.000316"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:36.328803" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>output-node-connector</arg>
<arg>${output_port}</arg>
<arg>instructions/instruction/apply-actions/action/output-action</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa709abd0&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:36.325959" elapsed="0.002945"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:36.328954" elapsed="0.000023"/>
</return>
<arg>${flow}</arg>
<arg>0</arg>
<arg>0</arg>
<arg>${output_port}</arg>
<status status="PASS" start="2026-10-20T23:19:36.245292" elapsed="0.083757"/>
</kw>
<kw name="Set Flow Ethernet Match" owner="FlowLib">
<kw name="Clear Flow Matches" owner="FlowLib">
<kw name="Remove Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:36.333429" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa5717970&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:36.333042" elapsed="0.000412"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Remove Elements" owner="XML">
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Removes all elements matching `xpath` from the `source` structure.</doc>
<status status="PASS" start="2026-10-20T23:19:36.334032" elapsed="0.000269"/>
</kw>
<arg>Remove Elements</arg>
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-20T23:19:36.333655" elapsed="0.000711"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:36.334857" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;NORMAL&lt;/output-node-connector&gt;&lt;/ou...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:36.334553" elapsed="0.000333"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:36.335060" elapsed="0.000121"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:36.335239" elapsed="0.000028"/>
</return>
<arg>${flow}</arg>
<arg>match/${match_element}</arg>
<doc>Removes the element at the given ${element_xpath} within the given &lt;FlowLib.Flow object at 0x756aa709abd0&gt;
object. The &lt;FlowLib.Flow object at 0x756aa709abd0&gt; object's xml representation will be updated to reflect this removal.</doc>
<status status="PASS" start="2026-10-20T23:19:36.332661" elapsed="0.002694"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:36.335398" elapsed="0.000024"/>
</return>
<arg>${flow}</arg>
<arg>match/ethernet-match</arg>
<doc>Will clean out any existing flow matches in the given &lt;FlowLib.Flow object at 0x756aa709abd0&gt; object</doc>
<status status="PASS" start="2026-10-20T23:19:36.331027" elapsed="0.004498"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:36.344496" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa5714e00&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:36.344120" elapsed="0.000402"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:36.344723" elapsed="0.000333"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:36.345597" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;NORMAL&lt;/output-node-connector&gt;&lt;/ou...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:36.345266" elapsed="0.000359"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:36.345803" elapsed="0.000121"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:36.346439" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;NORMAL&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match /&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;361&lt;/id&gt;&lt;priority&gt;9&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:36.346142" elapsed="0.000346"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:36.346526" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>ethernet-match</arg>
<arg>${EMPTY}</arg>
<arg>match</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa709abd0&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:36.343673" elapsed="0.002954"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-10-20T23:19:36.346986" level="INFO">${type} = 0x800</msg>
<var>${type}</var>
<arg>${match_value_dict}</arg>
<arg>type</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="PASS" start="2026-10-20T23:19:36.346826" elapsed="0.000184"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:36.355980" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa57174c0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:36.355634" elapsed="0.000372"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:36.356206" elapsed="0.000370"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:36.357080" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;NORMAL&lt;/output-node-connector&gt;&lt;/ou...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:36.356770" elapsed="0.000338"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:36.357297" elapsed="0.000138"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:36.357935" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;NORMAL&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type /&gt;&lt;/ethernet-match&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;361&lt;/id&gt;&lt;priority&gt;9&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:36.357663" elapsed="0.000321"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:36.358023" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>ethernet-type</arg>
<arg>${EMPTY}</arg>
<arg>match/ethernet-match</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa709abd0&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:36.355160" elapsed="0.002965"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:36.367286" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa8aa1cb0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:36.366920" elapsed="0.000406"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:36.367529" elapsed="0.000344"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:36.368415" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;NORMAL&lt;/output-node-connector&gt;&lt;/ou...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:36.368069" elapsed="0.000375"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:36.368655" elapsed="0.000124"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:36.369293" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;NORMAL&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;/ethernet-match&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;361&lt;/id&gt;&lt;priority&gt;9&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:36.369002" elapsed="0.000355"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:36.369397" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>type</arg>
<arg>${type}</arg>
<arg>match/ethernet-match/ethernet-type</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa709abd0&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:36.366484" elapsed="0.003015"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-10-20T23:19:36.369850" level="INFO">${src} = 00:ab:cd:ef:01:23</msg>
<var>${src}</var>
<arg>${match_value_dict}</arg>
<arg>source</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="PASS" start="2026-10-20T23:19:36.369699" elapsed="0.000175"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:36.378832" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa5717f60&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:36.378482" elapsed="0.000376"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:36.379057" elapsed="0.000367"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:36.379934" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;NORMAL&lt;/output-node-connector&gt;&lt;/ou...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:36.379620" elapsed="0.000342"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:36.380137" elapsed="0.000136"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:36.380774" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;NORMAL&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source /&gt;&lt;/ethernet-match&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;361&lt;/id&gt;&lt;priority&gt;9&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:36.380510" elapsed="0.000314"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:36.380864" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>ethernet-source</arg>
<arg>${EMPTY}</arg>
<arg>match/ethernet-match</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa709abd0&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:36.378011" elapsed="0.002953"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:36.389885" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa57158a0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:36.389534" elapsed="0.000376"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:36.390109" elapsed="0.000386"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:36.391004" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;NORMAL&lt;/output-node-connector&gt;&lt;/ou...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:36.390689" elapsed="0.000343"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:36.391206" elapsed="0.000154"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:36.391857" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;NORMAL&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;/ethernet-match&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;361&lt;/id&gt;&lt;priority&gt;9&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:36.391584" elapsed="0.000325"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:36.391948" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>address</arg>
<arg>${src}</arg>
<arg>match/ethernet-match/ethernet-source</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa709abd0&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:36.389072" elapsed="0.003012"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-10-20T23:19:36.392469" level="INFO">${dst} = ff:ff:ff:ff:ff:ff</msg>
<var>${dst}</var>
<arg>${match_value_dict}</arg>
<arg>destination</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="PASS" start="2026-10-20T23:19:36.392300" elapsed="0.000193"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:36.401627" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa8aa1210&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:36.401255" elapsed="0.000398"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:36.401853" elapsed="0.000344"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:36.402748" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;NORMAL&lt;/output-node-connector&gt;&lt;/ou...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:36.402424" elapsed="0.000352"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:36.402950" elapsed="0.000120"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:36.403588" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;NORMAL&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination /&gt;&lt;/ethernet-match&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;361&lt;/id&gt;&lt;priority&gt;9&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:36.403319" elapsed="0.000321"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:36.403679" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>ethernet-destination</arg>
<arg>${EMPTY}</arg>
<arg>match/ethernet-match</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa709abd0&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:36.400789" elapsed="0.002990"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:36.412760" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa5715f80&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:36.412399" elapsed="0.000388"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:36.412985" elapsed="0.000379"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:36.413883" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;NORMAL&lt;/output-node-connector&gt;&lt;/ou...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:36.413559" elapsed="0.000352"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:36.414085" elapsed="0.000127"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:36.414733" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;NORMAL&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination&gt;&lt;address&gt;ff:ff:ff:ff:ff:ff&lt;/address&gt;&lt;/ethernet-destination&gt;&lt;/ethernet-match&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;361&lt;/id&gt;&lt;priority&gt;9&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:36.414466" elapsed="0.000322"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:36.414827" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>address</arg>
<arg>${dst}</arg>
<arg>match/ethernet-match/ethernet-destination</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa709abd0&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:36.411937" elapsed="0.002992"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:36.414977" elapsed="0.000023"/>
</return>
<arg>${flow}</arg>
<arg>${ethernet_match_dict}</arg>
<doc>Specific keyword for adding an ethernet match rules where the elements are given
in key/value pairs inside the ${match_value_dict} argument. This keyword will also remove any
existing ethernet-match elements from the flow before adding</doc>
<status status="PASS" start="2026-10-20T23:19:36.330666" elapsed="0.084404"/>
</kw>
<kw name="Set Flow IPv4 Match" owner="FlowLib">
<kw name="Clear Flow Matches" owner="FlowLib">
<kw name="Remove Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:36.419351" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa5716520&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:36.418956" elapsed="0.000421"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Remove Elements" owner="XML">
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Removes all elements matching `xpath` from the `source` structure.</doc>
<status status="PASS" start="2026-10-20T23:19:36.419946" elapsed="0.000254"/>
</kw>
<arg>Remove Elements</arg>
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-20T23:19:36.419575" elapsed="0.000691"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:36.420790" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;NORMAL&lt;/output-node-connector&gt;&lt;/ou...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:36.420466" elapsed="0.000353"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:36.420994" elapsed="0.000120"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:36.421158" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>match/${match_element}</arg>
<doc>Removes the element at the given ${element_xpath} within the given &lt;FlowLib.Flow object at 0x756aa709abd0&gt;
object. The &lt;FlowLib.Flow object at 0x756aa709abd0&gt; object's xml representation will be updated to reflect this removal.</doc>
<status status="PASS" start="2026-10-20T23:19:36.418576" elapsed="0.002696"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:36.421330" elapsed="0.000025"/>
</return>
<arg>${flow}</arg>
<arg>match/ipv4-source</arg>
<doc>Will clean out any existing flow matches in the given &lt;FlowLib.Flow object at 0x756aa709abd0&gt; object</doc>
<status status="PASS" start="2026-10-20T23:19:36.416953" elapsed="0.004473"/>
</kw>
<kw name="Clear Flow Matches" owner="FlowLib">
<kw name="Remove Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:36.424172" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4fa5bc0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:36.423805" elapsed="0.000393"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Remove Elements" owner="XML">
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Removes all elements matching `xpath` from the `source` structure.</doc>
<status status="PASS" start="2026-10-20T23:19:36.424800" elapsed="0.000254"/>
</kw>
<arg>Remove Elements</arg>
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-20T23:19:36.424424" elapsed="0.000680"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:36.425648" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;NORMAL&lt;/output-node-connector&gt;&lt;/ou...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:36.425322" elapsed="0.000354"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:36.425853" elapsed="0.000121"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:36.426018" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>match/${match_element}</arg>
<doc>Removes the element at the given ${element_xpath} within the given &lt;FlowLib.Flow object at 0x756aa709abd0&gt;
object. The &lt;FlowLib.Flow object at 0x756aa709abd0&gt; object's xml representation will be updated to reflect this removal.</doc>
<status status="PASS" start="2026-10-20T23:19:36.423420" elapsed="0.002697"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:36.426159" elapsed="0.000023"/>
</return>
<arg>${flow}</arg>
<arg>match/ipv4-destination</arg>
<doc>Will clean out any existing flow matches in the given &lt;FlowLib.Flow object at 0x756aa709abd0&gt; object</doc>
<status status="PASS" start="2026-10-20T23:19:36.421603" elapsed="0.004662"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-10-20T23:19:36.426623" level="INFO">${src} = 11.3.0.0/16</msg>
<var>${src}</var>
<arg>${match_value_dict}</arg>
<arg>source</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="PASS" start="2026-10-20T23:19:36.426471" elapsed="0.000175"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:36.435555" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa5717e70&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:36.435165" elapsed="0.000416"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:36.435782" elapsed="0.000331"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:36.436667" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;NORMAL&lt;/output-node-connector&gt;&lt;/ou...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:36.436340" elapsed="0.000356"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:36.436870" elapsed="0.000120"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:36.437639" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;NORMAL&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination&gt;&lt;address&gt;ff:ff:ff:ff:ff:ff&lt;/address&gt;&lt;/ethernet-destination&gt;&lt;/ethernet-match&gt;&lt;ipv4-source&gt;11.3.0.0/16&lt;/ipv4-source&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;361&lt;/id&gt;&lt;priority&gt;9&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:36.437352" elapsed="0.000379"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:36.437772" elapsed="0.000028"/>
</return>
<arg>${flow}</arg>
<arg>ipv4-source</arg>
<arg>${src}</arg>
<arg>match</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa709abd0&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:36.434730" elapsed="0.003145"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-10-20T23:19:36.438240" level="INFO">${dst} = 99.0.0.0/8</msg>
<var>${dst}</var>
<arg>${match_value_dict}</arg>
<arg>destination</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="PASS" start="2026-10-20T23:19:36.438073" elapsed="0.000192"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:36.447248" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa5716cf0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:36.446874" elapsed="0.000400"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:36.447491" elapsed="0.000334"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:36.448384" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;NORMAL&lt;/output-node-connector&gt;&lt;/ou...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:36.448021" elapsed="0.000392"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:36.448591" elapsed="0.000122"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:36.449197" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;NORMAL&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination&gt;&lt;address&gt;ff:ff:ff:ff:ff:ff&lt;/address&gt;&lt;/ethernet-destination&gt;&lt;/ethernet-match&gt;&lt;ipv4-source&gt;11.3.0.0/16&lt;/ipv4-source&gt;&lt;ipv4-destination&gt;99.0.0.0/8&lt;/ipv4-destination&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;361&lt;/id&gt;&lt;priority&gt;9&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:36.448932" elapsed="0.000335"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:36.449323" elapsed="0.000029"/>
</return>
<arg>${flow}</arg>
<arg>ipv4-destination</arg>
<arg>${dst}</arg>
<arg>match</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa709abd0&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:36.446430" elapsed="0.003008"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:36.449487" elapsed="0.000024"/>
</return>
<arg>${flow}</arg>
<arg>${ipv4_match_dict}</arg>
<doc>Specific keyword for adding an ipv4 match rules where the elements are given
in key/value pairs inside the ${match_value_dict} argument. This keyword will also remove any
existing ipv4 match elements from the flow before adding</doc>
<status status="PASS" start="2026-10-20T23:19:36.416571" elapsed="0.033009"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:36.450080" level="INFO">Flow XML is &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;NORMAL&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination&gt;&lt;address&gt;ff:ff:ff:ff:ff:ff&lt;/address&gt;&lt;/ethernet-destination&gt;&lt;/ethernet-match&gt;&lt;ipv4-source&gt;11.3.0.0/16&lt;/ipv4-source&gt;&lt;ipv4-destination&gt;99.0.0.0/8&lt;/ipv4-destination&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;361&lt;/id&gt;&lt;priority&gt;9&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>Flow XML is ${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:36.449805" elapsed="0.000326"/>
</kw>
<kw name="Call Method" owner="BuiltIn">
<arg>${test_switch}</arg>
<arg>create_flow_match_elements</arg>
<arg>${flow.xml}</arg>
<doc>Calls the named method of the given object with the provided arguments.</doc>
<status status="PASS" start="2026-10-20T23:19:36.450343" elapsed="0.000363"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:36.451204" level="INFO">['dl_src=00:ab:cd:ef:01:23,dl_dst=ff:ff:ff:ff:ff:ff,nw_src=11.3.0.0/16,nw_dst=99.0.0.0/8 actions=NORMAL', 'table=200']</msg>
<arg>${test_switch.flow_validations}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:36.450933" elapsed="0.000328"/>
</kw>
<kw name="Get Switch Datapath ID" owner="SwitchUtils">
<kw name="Configure Connection Index And Prompt Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${switch.connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-10-20T23:19:36.452566" elapsed="0.000160"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:36.452286" elapsed="0.000474"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:36.452267" elapsed="0.000518"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Set Client Configuration" owner="SSHLibrary">
<arg>prompt=${switch.mgmt_prompt}</arg>
<arg>timeout=5s</arg>
<doc>Update the `configuration` of the current connection.</doc>
<status status="PASS" start="2026-10-20T23:19:36.453079" elapsed="0.000299"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:36.452835" elapsed="0.000609"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:36.452820" elapsed="0.000651"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Switch Connection" owner="Telnet">
<arg>${switch.connection_index}</arg>
<doc>Switches between active connections using an index or an alias.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:36.453771" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:36.453523" elapsed="0.000299"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:36.453508" elapsed="0.000336"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Set Prompt" owner="Telnet">
<arg>${switch.mgmt_prompt}</arg>
<arg>True</arg>
<doc>Sets the prompt used by the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:36.454130" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:36.453892" elapsed="0.000290"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:36.453878" elapsed="0.000327"/>
</if>
<arg>${switch}</arg>
<doc>when using multiple switch connections (e.g. more than one switch device) this keyword will switch the current connection index and prompt so that the following
Read or Write actions happen on the correct device.</doc>
<status status="PASS" start="2026-10-20T23:19:36.452053" elapsed="0.002213"/>
</kw>
<kw name="Read Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Read" owner="SSHLibrary">
<doc>Consumes and returns everything available on the server output.</doc>
<status status="PASS" start="2026-10-20T23:19:36.454946" elapsed="0.000119"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:36.454707" elapsed="0.000389"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:36.454691" elapsed="0.000427"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Read" owner="Telnet">
<doc>Reads everything that is currently available in the output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:36.455425" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:36.455167" elapsed="0.000305"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:36.455152" elapsed="0.000342"/>
</if>
<arg>${switch}</arg>
<doc>Wraps the Read command so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:36.454497" elapsed="0.001040"/>
</kw>
<kw name="Execute Command Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:19:36.456493" level="INFO">Executing command '/sbin/ifconfig s1 | grep -o -E "([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}"'.</msg>
<msg time="2026-10-20T23:19:36.469705" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:19:36.469792" level="INFO">${output} = e2:07:e3:56:6d:42</msg>
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:19:36.456378" elapsed="0.013436"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:36.456081" elapsed="0.013767"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${output}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:36.470059" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:36.469872" elapsed="0.000237"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:36.456065" elapsed="0.014065"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Execute Command" owner="Telnet">
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes the given `command` and reads, logs, and returns resulting output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:36.470454" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:36.470179" elapsed="0.000327"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:36.470969" level="INFO">${output} = e2:07:e3:56:6d:42</msg>
<var>${output}</var>
<arg>${output}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:36.470706" elapsed="0.000286"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:36.470527" elapsed="0.000497"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:36.470165" elapsed="0.000878"/>
</if>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-20T23:19:36.471076" elapsed="0.000025"/>
</return>
<msg time="2026-10-20T23:19:36.471212" level="INFO">${switch.datapath_id_output_string} = e2:07:e3:56:6d:42</msg>
<var>${switch.datapath_id_output_string}</var>
<arg>${switch}</arg>
<arg>${switch.datapath_id_output_command}</arg>
<doc>Wraps the Execute Command keyword so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:36.455787" elapsed="0.015462"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:36.471765" level="INFO">e2:07:e3:56:6d:42</msg>
<arg>${switch.datapath_id_output_string}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:36.471493" elapsed="0.000313"/>
</kw>
<kw name="Call Method" owner="BuiltIn">
<arg>${switch}</arg>
<arg>update_datapath_id</arg>
<doc>Calls the named method of the given object with the provided arguments.</doc>
<status status="PASS" start="2026-10-20T23:19:36.471993" elapsed="0.000261"/>
</kw>
<return>
<value>${switch.datapath_id}</value>
<status status="PASS" start="2026-10-20T23:19:36.472299" elapsed="0.000040"/>
</return>
<msg time="2026-10-20T23:19:36.472488" level="INFO">${dpid_id} = 248523506740546</msg>
<var>${dpid_id}</var>
<arg>${test_switch}</arg>
<doc>Using the connection index for the given switch, will execute the command string
"datapath_id_output_command" which will store the output in switch.datapath_id_output_string.
The switch object method "update_datapath_id" is called which is assumed to place the ODL
friendly (decimal) version of the datapath id in to switch.datapath_id and the value is also
returned from this keyword.</doc>
<status status="PASS" start="2026-10-20T23:19:36.451473" elapsed="0.021040"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Add Flow To Controller And Verify" owner="FlowLib">
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:19:36.477492" level="INFO">PUT Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=361 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=361 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Content-Length': '665', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;NORMAL&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination&gt;&lt;address&gt;ff:ff:ff:ff:ff:ff&lt;/address&gt;&lt;/ethernet-destination&gt;&lt;/ethernet-match&gt;&lt;ipv4-source&gt;11.3.0.0/16&lt;/ipv4-source&gt;&lt;ipv4-destination&gt;99.0.0.0/8&lt;/ipv4-destination&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;361&lt;/id&gt;&lt;priority&gt;9&lt;/priority&gt;&lt;/flow&gt; 
 </msg>
<msg time="2026-10-20T23:19:36.477579" level="INFO">PUT Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=361 
 status=404, reason=Not Found 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-10-20T23:19:36.477675" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=361</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=${node_id}/flow-node-inventory:table=${table_id}/flow=${flow_id}</arg>
<arg>headers=${HEADERS_XML}</arg>
<arg>data=${flow_body}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:19:36.473749" elapsed="0.004288">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=361</status>
</kw>
<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-10-20T23:19:36.478333" elapsed="0.000023"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=${node_id}/flow-node-inventory:table=${table_id}/flow=${flow_id}?content=config</arg>
<arg>headers=${ACCEPT_XML}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:36.478542" elapsed="0.000020"/>
</kw>
<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-10-20T23:19:36.478792" elapsed="0.000019"/>
</kw>
<kw name="Compare Xml" owner="Common">
<arg>${flow_body}</arg>
<arg>${resp.text}</arg>
<doc>compare the two XML files to see if they contain the same data
but could be if different order.
It just split the xml in to lines and just check the line is in
the other file</doc>
<status status="NOT RUN" start="2026-10-20T23:19:36.478979" elapsed="0.000019"/>
</kw>
<arg>${flow.xml}</arg>
<arg>openflow%3A${dpid_id}</arg>
<arg>${flow.table_id}</arg>
<arg>${flow.id}</arg>
<doc>Push flow through REST-API and verify in data-store</doc>
<status status="FAIL" start="2026-10-20T23:19:36.473210" elapsed="0.005885">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=361</status>
</kw>
<kw name="Add Flow To Controller And Verify" owner="FlowLib">
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:19:37.487920" level="INFO">PUT Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=361 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=361 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Content-Length': '665', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;NORMAL&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination&gt;&lt;address&gt;ff:ff:ff:ff:ff:ff&lt;/address&gt;&lt;/ethernet-destination&gt;&lt;/ethernet-match&gt;&lt;ipv4-source&gt;11.3.0.0/16&lt;/ipv4-source&gt;&lt;ipv4-destination&gt;99.0.0.0/8&lt;/ipv4-destination&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;361&lt;/id&gt;&lt;priority&gt;9&lt;/priority&gt;&lt;/flow&gt; 
 </msg>
<msg time="2026-10-20T23:19:37.488057" level="INFO">PUT Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=361 
 status=404, reason=Not Found 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-10-20T23:19:37.488299" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=361</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=${node_id}/flow-node-inventory:table=${table_id}/flow=${flow_id}</arg>
<arg>headers=${HEADERS_XML}</arg>
<arg>data=${flow_body}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:19:37.481370" elapsed="0.007702">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=361</status>
</kw>
<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-10-20T23:19:37.489726" elapsed="0.000050"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=${node_id}/flow-node-inventory:table=${table_id}/flow=${flow_id}?content=config</arg>
<arg>headers=${ACCEPT_XML}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:37.490120" elapsed="0.000044"/>
</kw>
<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-10-20T23:19:37.490711" elapsed="0.000045"/>
</kw>
<kw name="Compare Xml" owner="Common">
<arg>${flow_body}</arg>
<arg>${resp.text}</arg>
<doc>compare the two XML files to see if they contain the same data
but could be if different order.
It just split the xml in to lines and just check the line is in
the other file</doc>
<status status="NOT RUN" start="2026-10-20T23:19:37.491127" elapsed="0.000042"/>
</kw>
<arg>${flow.xml}</arg>
<arg>openflow%3A${dpid_id}</arg>
<arg>${flow.table_id}</arg>
<arg>${flow.id}</arg>
<doc>Push flow through REST-API and verify in data-store</doc>
<status status="FAIL" start="2026-10-20T23:19:37.479896" elapsed="0.011520">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=361</status>
</kw>
<kw name="Add Flow To Controller And Verify" owner="FlowLib">
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:19:38.499475" level="INFO">PUT Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=361 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=361 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Content-Length': '665', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;NORMAL&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination&gt;&lt;address&gt;ff:ff:ff:ff:ff:ff&lt;/address&gt;&lt;/ethernet-destination&gt;&lt;/ethernet-match&gt;&lt;ipv4-source&gt;11.3.0.0/16&lt;/ipv4-source&gt;&lt;ipv4-destination&gt;99.0.0.0/8&lt;/ipv4-destination&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;361&lt;/id&gt;&lt;priority&gt;9&lt;/priority&gt;&lt;/flow&gt; 
 </msg>
<msg time="2026-10-20T23:19:38.499692" level="INFO">PUT Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=361 
 status=404, reason=Not Found 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-10-20T23:19:38.499894" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=361</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=${node_id}/flow-node-inventory:table=${table_id}/flow=${flow_id}</arg>
<arg>headers=${HEADERS_XML}</arg>
<arg>data=${flow_body}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:19:38.493690" elapsed="0.006997">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=361</status>
</kw>
<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-10-20T23:19:38.501352" elapsed="0.000052"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=${node_id}/flow-node-inventory:table=${table_id}/flow=${flow_id}?content=config</arg>
<arg>headers=${ACCEPT_XML}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:38.501757" elapsed="0.000044"/>
</kw>
<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-10-20T23:19:38.502348" elapsed="0.000047"/>
</kw>
<kw name="Compare Xml" owner="Common">
<arg>${flow_body}</arg>
<arg>${resp.text}</arg>
<doc>compare the two XML files to see if they contain the same data
but could be if different order.
It just split the xml in to lines and just check the line is in
the other file</doc>
<status status="NOT RUN" start="2026-10-20T23:19:38.502775" elapsed="0.000042"/>
</kw>
<arg>${flow.xml}</arg>
<arg>openflow%3A${dpid_id}</arg>
<arg>${flow.table_id}</arg>
<arg>${flow.id}</arg>
<doc>Push flow through REST-API and verify in data-store</doc>
<status status="FAIL" start="2026-10-20T23:19:38.492230" elapsed="0.010787">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=361</status>
</kw>
<kw name="Add Flow To Controller And Verify" owner="FlowLib">
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:19:39.511167" level="INFO">PUT Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=361 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=361 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Content-Length': '665', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;NORMAL&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination&gt;&lt;address&gt;ff:ff:ff:ff:ff:ff&lt;/address&gt;&lt;/ethernet-destination&gt;&lt;/ethernet-match&gt;&lt;ipv4-source&gt;11.3.0.0/16&lt;/ipv4-source&gt;&lt;ipv4-destination&gt;99.0.0.0/8&lt;/ipv4-destination&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;361&lt;/id&gt;&lt;priority&gt;9&lt;/priority&gt;&lt;/flow&gt; 
 </msg>
<msg time="2026-10-20T23:19:39.511352" level="INFO">PUT Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=361 
 status=404, reason=Not Found 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-10-20T23:19:39.511558" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=361</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=${node_id}/flow-node-inventory:table=${table_id}/flow=${flow_id}</arg>
<arg>headers=${HEADERS_XML}</arg>
<arg>data=${flow_body}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:19:39.505363" elapsed="0.006935">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=361</status>
</kw>
<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-10-20T23:19:39.512950" elapsed="0.000048"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=${node_id}/flow-node-inventory:table=${table_id}/flow=${flow_id}?content=config</arg>
<arg>headers=${ACCEPT_XML}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:39.513390" elapsed="0.000047"/>
</kw>
<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-10-20T23:19:39.514007" elapsed="0.000049"/>
</kw>
<kw name="Compare Xml" owner="Common">
<arg>${flow_body}</arg>
<arg>${resp.text}</arg>
<doc>compare the two XML files to see if they contain the same data
but could be if different order.
It just split the xml in to lines and just check the line is in
the other file</doc>
<status status="NOT RUN" start="2026-10-20T23:19:39.514477" elapsed="0.000043"/>
</kw>
<arg>${flow.xml}</arg>
<arg>openflow%3A${dpid_id}</arg>
<arg>${flow.table_id}</arg>
<arg>${flow.id}</arg>
<doc>Push flow through REST-API and verify in data-store</doc>
<status status="FAIL" start="2026-10-20T23:19:39.503899" elapsed="0.010821">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=361</status>
</kw>
<msg time="2026-10-20T23:19:39.514921" level="FAIL">Keyword 'Add Flow To Controller And Verify' failed after retrying for 3 seconds. The last error was: HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=361</msg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Add Flow To Controller And Verify</arg>
<arg>${flow.xml}</arg>
<arg>openflow%3A${dpid_id}</arg>
<arg>${flow.table_id}</arg>
<arg>${flow.id}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-10-20T23:19:36.472731" elapsed="3.042386">Keyword 'Add Flow To Controller And Verify' failed after retrying for 3 seconds. The last error was: HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=361</status>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>3s</arg>
<arg>1s</arg>
<arg>Validate Switch Output</arg>
<arg>${test_switch}</arg>
<arg>${test_switch.dump_all_flows}</arg>
<arg>${test_switch.flow_validations}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:39.515691" elapsed="0.000045"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>3s</arg>
<arg>1s</arg>
<arg>Remove Flow From Controller And Verify</arg>
<arg>openflow%3A${dpid_id}</arg>
<arg>${flow.table_id}</arg>
<arg>${flow.id}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:39.516355" elapsed="0.000047"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>3s</arg>
<arg>1s</arg>
<arg>Validate Switch Output</arg>
<arg>${test_switch}</arg>
<arg>${test_switch.dump_all_flows}</arg>
<arg>${test_switch.flow_validations}</arg>
<arg>false</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:39.516882" elapsed="0.000043"/>
</kw>
<arg>${TEST_NAME}</arg>
<arg>200</arg>
<arg>361</arg>
<arg>9</arg>
<status status="FAIL" start="2026-10-20T23:19:36.158006" elapsed="3.359128">Keyword 'Add Flow To Controller And Verify' failed after retrying for 3 seconds. The last error was: HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=361</status>
</kw>
<doc>OF1.3 OFPP_NORMAL = 0xfffffffa, /* Process with normal L2/L3 switching. */</doc>
<tag>normal</tag>
<status status="FAIL" start="2026-10-20T23:19:36.156874" elapsed="3.360634">Keyword 'Add Flow To Controller And Verify' failed after retrying for 3 seconds. The last error was: HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=361</status>
</test>
<test id="s1-s4-s2-t4" name="FLOOD" line="65">
<kw name="Create And Remove Flow">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:19:39.521466" level="INFO">${ethernet_match_dict} = {'type': '0x800', 'destination': 'ff:ff:ff:ff:ff:ff', 'source': '00:ab:cd:ef:01:23'}</msg>
<var>${ethernet_match_dict}</var>
<arg>type=${eth_type}</arg>
<arg>destination=${eth_dst}</arg>
<arg>source=${eth_src}</arg>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:19:39.520442" elapsed="0.001084"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:19:39.522860" level="INFO">${ipv4_match_dict} = {'source': '11.3.0.0/16', 'destination': '99.0.0.0/8'}</msg>
<var>${ipv4_match_dict}</var>
<arg>source=${ipv4_src}</arg>
<arg>destination=${ipv4_dst}</arg>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:19:39.522009" elapsed="0.000908"/>
</kw>
<kw name="Create Inventory Flow" owner="FlowLib">
<kw name="Make Inventory Flow" owner="FlowLib">
<msg time="2026-10-20T23:19:39.524251" level="INFO">${flow} = &lt;FlowLib.Flow object at 0x756aa4dc5b10&gt;</msg>
<var>${flow}</var>
<doc>Robot Keyword to create and return an instance of the Flow
class.</doc>
<status status="PASS" start="2026-10-20T23:19:39.524000" elapsed="0.000351"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:39.524446" elapsed="0.000067"/>
</return>
<msg time="2026-10-20T23:19:39.524738" level="INFO">${flow} = &lt;FlowLib.Flow object at 0x756aa4dc5b10&gt;</msg>
<var>${flow}</var>
<doc>Calls FlowLib.Make_Inventory_Flow function and initializes and sanitizes
the basic flow elements that can be given to flow:inventory</doc>
<status status="PASS" start="2026-10-20T23:19:39.523292" elapsed="0.001511"/>
</kw>
<kw name="Set &quot;${flow}&quot; &quot;table_id&quot; With &quot;${table_id}&quot;" owner="FlowLib" source_name="Set &quot;${flow}&quot; &quot;${property}&quot; With &quot;${property_val}&quot;">
<if>
<branch type="IF" condition="&quot;table_id&quot; != &quot;${property}&quot; and &quot;cookie_mask&quot; != &quot;${property}&quot;">
<kw name="Replace String" owner="String">
<var>${property}</var>
<arg>${property}</arg>
<arg>_</arg>
<arg>-</arg>
<doc>Replaces `search_for` in the given `string` with `replace_with`.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:39.530095" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:39.529491" elapsed="0.000735"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:39.531364" level="INFO">${property} = table_id</msg>
<var>${property}</var>
<arg>${property}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:39.530722" elapsed="0.000700"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:39.530281" elapsed="0.001214"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:39.529448" elapsed="0.002092"/>
</if>
<kw name="Remove Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:39.536539" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa5715d50&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:39.535729" elapsed="0.000869"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Remove Elements" owner="XML">
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Removes all elements matching `xpath` from the `source` structure.</doc>
<status status="PASS" start="2026-10-20T23:19:39.537926" elapsed="0.000621"/>
</kw>
<arg>Remove Elements</arg>
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-20T23:19:39.537041" elapsed="0.001617"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:39.539741" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:39.539071" elapsed="0.000727"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:39.540186" elapsed="0.000316"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:39.540603" elapsed="0.000060"/>
</return>
<arg>${flow}</arg>
<arg>${property}</arg>
<doc>Removes the element at the given ${element_xpath} within the given &lt;FlowLib.Flow object at 0x756aa4dc5b10&gt;
object. The &lt;FlowLib.Flow object at 0x756aa4dc5b10&gt; object's xml representation will be updated to reflect this removal.</doc>
<status status="PASS" start="2026-10-20T23:19:39.534825" elapsed="0.006001"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:39.557497" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa5715e40&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:39.557019" elapsed="0.000514"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:39.557811" elapsed="0.000467"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:39.558964" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:39.558580" elapsed="0.000421"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:39.559294" elapsed="0.000201"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:39.560179" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:39.559804" elapsed="0.000438"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:39.560298" elapsed="0.000069"/>
</return>
<arg>${flow}</arg>
<arg>${property}</arg>
<arg>${property_val}</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4dc5b10&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:39.556401" elapsed="0.004074"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>${property}</arg>
<arg>${property_val}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:39.560730" elapsed="0.000194"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:39.560986" elapsed="0.000034"/>
</return>
<doc>Embedded variables to make higher level keywords more readable.
There are some cases where the python attribute uses an underscore,
but a hyphen needs to be used. This seems inconsistent, and may need
to be looked at from the openflow plugin perspective.</doc>
<status status="PASS" start="2026-10-20T23:19:39.528865" elapsed="0.032259"/>
</kw>
<kw name="Set &quot;${flow}&quot; &quot;id&quot; With &quot;${flow_id}&quot;" owner="FlowLib" source_name="Set &quot;${flow}&quot; &quot;${property}&quot; With &quot;${property_val}&quot;">
<if>
<branch type="IF" condition="&quot;table_id&quot; != &quot;${property}&quot; and &quot;cookie_mask&quot; != &quot;${property}&quot;">
<kw name="Replace String" owner="String">
<msg time="2026-10-20T23:19:39.564336" level="INFO">${property} = id</msg>
<var>${property}</var>
<arg>${property}</arg>
<arg>_</arg>
<arg>-</arg>
<doc>Replaces `search_for` in the given `string` with `replace_with`.</doc>
<status status="PASS" start="2026-10-20T23:19:39.564040" elapsed="0.000334"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:39.563677" elapsed="0.000749"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${property}</var>
<arg>${property}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:39.564713" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:39.564460" elapsed="0.000323"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:39.563653" elapsed="0.001157"/>
</if>
<kw name="Remove Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:39.568010" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa5716ca0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:39.567560" elapsed="0.000485"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Remove Elements" owner="XML">
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Removes all elements matching `xpath` from the `source` structure.</doc>
<status status="PASS" start="2026-10-20T23:19:39.568862" elapsed="0.000340"/>
</kw>
<arg>Remove Elements</arg>
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-20T23:19:39.568345" elapsed="0.000926"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:39.569940" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:39.569559" elapsed="0.000418"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:39.570225" elapsed="0.000204"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:39.570496" elapsed="0.000038"/>
</return>
<arg>${flow}</arg>
<arg>${property}</arg>
<doc>Removes the element at the given ${element_xpath} within the given &lt;FlowLib.Flow object at 0x756aa4dc5b10&gt;
object. The &lt;FlowLib.Flow object at 0x756aa4dc5b10&gt; object's xml representation will be updated to reflect this removal.</doc>
<status status="PASS" start="2026-10-20T23:19:39.567004" elapsed="0.003631"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:39.581498" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa5715d50&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:39.581146" elapsed="0.000378"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:39.581724" elapsed="0.000329"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:39.582552" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;81&lt;/id&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:39.582247" elapsed="0.000333"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:39.582753" elapsed="0.000124"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:39.583399" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;81&lt;/id&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:39.583106" elapsed="0.000337"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:39.583482" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>${property}</arg>
<arg>${property_val}</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4dc5b10&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:39.580695" elapsed="0.002889"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>${property}</arg>
<arg>${property_val}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:39.583798" elapsed="0.000134"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:39.583977" elapsed="0.000025"/>
</return>
<doc>Embedded variables to make higher level keywords more readable.
There are some cases where the python attribute uses an underscore,
but a hyphen needs to be used. This seems inconsistent, and may need
to be looked at from the openflow plugin perspective.</doc>
<status status="PASS" start="2026-10-20T23:19:39.563327" elapsed="0.020747"/>
</kw>
<kw name="Set &quot;${flow}&quot; &quot;priority&quot; With &quot;${priority}&quot;" owner="FlowLib" source_name="Set &quot;${flow}&quot; &quot;${property}&quot; With &quot;${property_val}&quot;">
<if>
<branch type="IF" condition="&quot;table_id&quot; != &quot;${property}&quot; and &quot;cookie_mask&quot; != &quot;${property}&quot;">
<kw name="Replace String" owner="String">
<msg time="2026-10-20T23:19:39.586398" level="INFO">${property} = priority</msg>
<var>${property}</var>
<arg>${property}</arg>
<arg>_</arg>
<arg>-</arg>
<doc>Replaces `search_for` in the given `string` with `replace_with`.</doc>
<status status="PASS" start="2026-10-20T23:19:39.586192" elapsed="0.000231"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:39.585933" elapsed="0.000527"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${property}</var>
<arg>${property}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:39.586661" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:39.586483" elapsed="0.000228"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:39.585916" elapsed="0.000814"/>
</if>
<kw name="Remove Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:39.588892" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4d63ec0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:39.588568" elapsed="0.000350"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Remove Elements" owner="XML">
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Removes all elements matching `xpath` from the `source` structure.</doc>
<status status="PASS" start="2026-10-20T23:19:39.589505" elapsed="0.000245"/>
</kw>
<arg>Remove Elements</arg>
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-20T23:19:39.589113" elapsed="0.000686"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:39.590267" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;81&lt;/id&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:39.589985" elapsed="0.000309"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:39.590493" elapsed="0.000120"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:39.590658" elapsed="0.000026"/>
</return>
<arg>${flow}</arg>
<arg>${property}</arg>
<doc>Removes the element at the given ${element_xpath} within the given &lt;FlowLib.Flow object at 0x756aa4dc5b10&gt;
object. The &lt;FlowLib.Flow object at 0x756aa4dc5b10&gt; object's xml representation will be updated to reflect this removal.</doc>
<status status="PASS" start="2026-10-20T23:19:39.588173" elapsed="0.002582"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:39.600036" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa5715e40&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:39.599679" elapsed="0.000385"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:39.600268" elapsed="0.000366"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:39.601120" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;81&lt;/id&gt;&lt;priority&gt;255&lt;/priority&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:39.600829" elapsed="0.000318"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:39.601348" elapsed="0.000125"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:39.601968" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;81&lt;/id&gt;&lt;priority&gt;255&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:39.601696" elapsed="0.000316"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:39.602053" elapsed="0.000033"/>
</return>
<arg>${flow}</arg>
<arg>${property}</arg>
<arg>${property_val}</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4dc5b10&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:39.599163" elapsed="0.003001"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>${property}</arg>
<arg>${property_val}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:39.602370" elapsed="0.000135"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:39.602550" elapsed="0.000026"/>
</return>
<doc>Embedded variables to make higher level keywords more readable.
There are some cases where the python attribute uses an underscore,
but a hyphen needs to be used. This seems inconsistent, and may need
to be looked at from the openflow plugin perspective.</doc>
<status status="PASS" start="2026-10-20T23:19:39.585684" elapsed="0.016965"/>
</kw>
<kw name="Clear Flow Actions" owner="FlowLib">
<kw name="Remove Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:39.605154" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa5715cb0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:39.604820" elapsed="0.000361"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Remove Elements" owner="XML">
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Removes all elements matching `xpath` from the `source` structure.</doc>
<status status="PASS" start="2026-10-20T23:19:39.605834" elapsed="0.000257"/>
</kw>
<arg>Remove Elements</arg>
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-20T23:19:39.605454" elapsed="0.000687"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:39.606635" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;81&lt;/id&gt;&lt;priority&gt;255&lt;/priority&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:39.606353" elapsed="0.000309"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:39.606838" elapsed="0.000119"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:39.607002" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>instructions/instruction</arg>
<doc>Removes the element at the given ${element_xpath} within the given &lt;FlowLib.Flow object at 0x756aa4dc5b10&gt;
object. The &lt;FlowLib.Flow object at 0x756aa4dc5b10&gt; object's xml representation will be updated to reflect this removal.</doc>
<status status="PASS" start="2026-10-20T23:19:39.604446" elapsed="0.002655"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:39.607142" elapsed="0.000023"/>
</return>
<arg>${flow}</arg>
<doc>Will clean out any existing flow actions in the given &lt;FlowLib.Flow object at 0x756aa4dc5b10&gt; object</doc>
<status status="PASS" start="2026-10-20T23:19:39.602842" elapsed="0.004391"/>
</kw>
<kw name="Set Flow Output Action" owner="FlowLib">
<kw name="Set Flow Action" owner="FlowLib">
<kw name="Remove Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:39.611110" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4d63560&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:39.610781" elapsed="0.000354"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Remove Elements" owner="XML">
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Removes all elements matching `xpath` from the `source` structure.</doc>
<status status="PASS" start="2026-10-20T23:19:39.611728" elapsed="0.000246"/>
</kw>
<arg>Remove Elements</arg>
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-20T23:19:39.611352" elapsed="0.000672"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:39.612517" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;81&lt;/id&gt;&lt;priority&gt;255&lt;/priority&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:39.612210" elapsed="0.000335"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:39.612720" elapsed="0.000119"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:39.612883" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>instruction</arg>
<doc>Removes the element at the given ${element_xpath} within the given &lt;FlowLib.Flow object at 0x756aa4dc5b10&gt;
object. The &lt;FlowLib.Flow object at 0x756aa4dc5b10&gt; object's xml representation will be updated to reflect this removal.</doc>
<status status="PASS" start="2026-10-20T23:19:39.610413" elapsed="0.002569"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:39.621836" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4d60950&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:39.621510" elapsed="0.000352"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:39.622067" elapsed="0.000358"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:39.622905" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction /&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;81&lt;/id&gt;&lt;priority&gt;255&lt;/priority&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:39.622620" elapsed="0.000313"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:39.623107" elapsed="0.000119"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:39.623734" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction /&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;81&lt;/id&gt;&lt;priority&gt;255&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:39.623470" elapsed="0.000309"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:39.623817" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>instruction</arg>
<arg>${EMPTY}</arg>
<arg>instructions</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4dc5b10&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:39.621040" elapsed="0.002876"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:39.632773" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4d62660&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:39.632437" elapsed="0.000363"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:39.633000" elapsed="0.000363"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:39.633849" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;81&lt;/id&gt;&lt;priority&gt;255&lt;/priority&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:39.633560" elapsed="0.000348"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:39.634090" elapsed="0.000127"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:39.634732" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;81&lt;/id&gt;&lt;priority&gt;255&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:39.634465" elapsed="0.000312"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:39.634816" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>order</arg>
<arg>${instruction_order}</arg>
<arg>instructions/instruction</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4dc5b10&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:39.631977" elapsed="0.002941"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:39.643886" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4d63bf0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:39.643550" elapsed="0.000362"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:39.644112" elapsed="0.000414"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:39.645013" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions /&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;81&lt;/id&gt;&lt;priority&gt;255&lt;/priori...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:39.644722" elapsed="0.000320"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:39.645216" elapsed="0.000143"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:39.645847" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions /&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;81&lt;/id&gt;&lt;priority&gt;255&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:39.645581" elapsed="0.000311"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:39.645932" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>apply-actions</arg>
<arg>${EMPTY}</arg>
<arg>instructions/instruction</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4dc5b10&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:39.643082" elapsed="0.002950"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:39.655118" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4d63f60&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:39.654784" elapsed="0.000360"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:39.655365" elapsed="0.000343"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:39.656205" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action /&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;81&lt;/...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:39.655906" elapsed="0.000327"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:39.656432" elapsed="0.000123"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:39.657037" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action /&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;81&lt;/id&gt;&lt;priority&gt;255&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:39.656773" elapsed="0.000310"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:39.657122" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>action</arg>
<arg>${EMPTY}</arg>
<arg>instructions/instruction/apply-actions</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4dc5b10&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:39.654285" elapsed="0.002937"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:39.666042" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4d63830&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:39.665707" elapsed="0.000361"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:39.666270" elapsed="0.000403"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:39.667168" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:39.666870" elapsed="0.000327"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:39.667438" elapsed="0.000123"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:39.668045" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;81&lt;/id&gt;&lt;priority&gt;255&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:39.667782" elapsed="0.000309"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:39.668130" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>order</arg>
<arg>${action_order}</arg>
<arg>instructions/instruction/apply-actions/action</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4dc5b10&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:39.665251" elapsed="0.002979"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:39.677077" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4d63e20&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:39.676737" elapsed="0.000366"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:39.677302" elapsed="0.000398"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:39.678196" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action /&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:39.677897" elapsed="0.000327"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:39.678422" elapsed="0.000122"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:39.679032" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action /&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;81&lt;/id&gt;&lt;priority&gt;255&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:39.678767" elapsed="0.000315"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:39.679124" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>${action}</arg>
<arg>${action_val}</arg>
<arg>instructions/instruction/apply-actions/action</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4dc5b10&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:39.676274" elapsed="0.002950"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:39.679272" elapsed="0.000023"/>
</return>
<arg>${flow}</arg>
<arg>${instruction_order}</arg>
<arg>${action_order}</arg>
<arg>output-action</arg>
<doc>Will remove the instruction element first, then add the proper xml structure
to implement the action as given in the arguments</doc>
<status status="PASS" start="2026-10-20T23:19:39.607820" elapsed="0.071572"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:39.688439" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa57f6c50&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:39.688075" elapsed="0.000390"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:39.688665" elapsed="0.000343"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:39.689534" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;FLOOD&lt;/output-node-connector&gt;&lt;/out...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:39.689205" elapsed="0.000357"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:39.689739" elapsed="0.000120"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:39.690368" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;FLOOD&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;81&lt;/id&gt;&lt;priority&gt;255&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:39.690077" elapsed="0.000378"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:39.690496" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>output-node-connector</arg>
<arg>${output_port}</arg>
<arg>instructions/instruction/apply-actions/action/output-action</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4dc5b10&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:39.687641" elapsed="0.002956"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:39.690646" elapsed="0.000023"/>
</return>
<arg>${flow}</arg>
<arg>0</arg>
<arg>0</arg>
<arg>${output_port}</arg>
<status status="PASS" start="2026-10-20T23:19:39.607424" elapsed="0.083313"/>
</kw>
<kw name="Set Flow Ethernet Match" owner="FlowLib">
<kw name="Clear Flow Matches" owner="FlowLib">
<kw name="Remove Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:39.694891" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa57177e0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:39.694548" elapsed="0.000369"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Remove Elements" owner="XML">
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Removes all elements matching `xpath` from the `source` structure.</doc>
<status status="PASS" start="2026-10-20T23:19:39.695509" elapsed="0.000254"/>
</kw>
<arg>Remove Elements</arg>
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-20T23:19:39.695113" elapsed="0.000700"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:39.696298" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;FLOOD&lt;/output-node-connector&gt;&lt;/out...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:39.695999" elapsed="0.000349"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:39.696525" elapsed="0.000121"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:39.696690" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>match/${match_element}</arg>
<doc>Removes the element at the given ${element_xpath} within the given &lt;FlowLib.Flow object at 0x756aa4dc5b10&gt;
object. The &lt;FlowLib.Flow object at 0x756aa4dc5b10&gt; object's xml representation will be updated to reflect this removal.</doc>
<status status="PASS" start="2026-10-20T23:19:39.694133" elapsed="0.002655"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:39.696830" elapsed="0.000023"/>
</return>
<arg>${flow}</arg>
<arg>match/ethernet-match</arg>
<doc>Will clean out any existing flow matches in the given &lt;FlowLib.Flow object at 0x756aa4dc5b10&gt; object</doc>
<status status="PASS" start="2026-10-20T23:19:39.692557" elapsed="0.004364"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:39.706005" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4d608b0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:39.705662" elapsed="0.000369"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:39.706235" elapsed="0.000367"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:39.707107" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;FLOOD&lt;/output-node-connector&gt;&lt;/out...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:39.706801" elapsed="0.000335"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:39.707335" elapsed="0.000129"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:39.707950" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;FLOOD&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match /&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;81&lt;/id&gt;&lt;priority&gt;255&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:39.707685" elapsed="0.000315"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:39.708039" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>ethernet-match</arg>
<arg>${EMPTY}</arg>
<arg>match</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4dc5b10&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:39.705194" elapsed="0.002947"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-10-20T23:19:39.708528" level="INFO">${type} = 0x800</msg>
<var>${type}</var>
<arg>${match_value_dict}</arg>
<arg>type</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="PASS" start="2026-10-20T23:19:39.708367" elapsed="0.000185"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:39.717593" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa57ced40&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:39.717223" elapsed="0.000396"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:39.717823" elapsed="0.000338"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:39.718727" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;FLOOD&lt;/output-node-connector&gt;&lt;/out...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:39.718415" elapsed="0.000341"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:39.718934" elapsed="0.000122"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:39.719567" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;FLOOD&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type /&gt;&lt;/ethernet-match&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;81&lt;/id&gt;&lt;priority&gt;255&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:39.719275" elapsed="0.000341"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:39.719655" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>ethernet-type</arg>
<arg>${EMPTY}</arg>
<arg>match/ethernet-match</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4dc5b10&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:39.716775" elapsed="0.002981"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:39.728611" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4d60860&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:39.728230" elapsed="0.000408"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:39.728839" elapsed="0.000345"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:39.729717" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;FLOOD&lt;/output-node-connector&gt;&lt;/out...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:39.729403" elapsed="0.000342"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:39.729921" elapsed="0.000120"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:39.730552" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;FLOOD&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;/ethernet-match&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;81&lt;/id&gt;&lt;priority&gt;255&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:39.730261" elapsed="0.000340"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:39.730640" elapsed="0.000028"/>
</return>
<arg>${flow}</arg>
<arg>type</arg>
<arg>${type}</arg>
<arg>match/ethernet-match/ethernet-type</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4dc5b10&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:39.727796" elapsed="0.002945"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-10-20T23:19:39.731090" level="INFO">${src} = 00:ab:cd:ef:01:23</msg>
<var>${src}</var>
<arg>${match_value_dict}</arg>
<arg>source</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="PASS" start="2026-10-20T23:19:39.730940" elapsed="0.000174"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:39.740021" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa5716a70&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:39.739672" elapsed="0.000374"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:39.740245" elapsed="0.000367"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:39.741137" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;FLOOD&lt;/output-node-connector&gt;&lt;/out...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:39.740808" elapsed="0.000364"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:39.741376" elapsed="0.000122"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:39.741987" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;FLOOD&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source /&gt;&lt;/ethernet-match&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;81&lt;/id&gt;&lt;priority&gt;255&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:39.741722" elapsed="0.000351"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:39.742114" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>ethernet-source</arg>
<arg>${EMPTY}</arg>
<arg>match/ethernet-match</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4dc5b10&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:39.739199" elapsed="0.003017"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:39.751263" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa5716ca0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:39.750911" elapsed="0.000378"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:39.751515" elapsed="0.000342"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:39.752395" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;FLOOD&lt;/output-node-connector&gt;&lt;/out...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:39.752053" elapsed="0.000370"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:39.752599" elapsed="0.000120"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:39.753201" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;FLOOD&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;/ethernet-match&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;81&lt;/id&gt;&lt;priority&gt;255&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:39.752938" elapsed="0.000314"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:39.753291" elapsed="0.000051"/>
</return>
<arg>${flow}</arg>
<arg>address</arg>
<arg>${src}</arg>
<arg>match/ethernet-match/ethernet-source</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4dc5b10&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:39.750473" elapsed="0.002946"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-10-20T23:19:39.753768" level="INFO">${dst} = ff:ff:ff:ff:ff:ff</msg>
<var>${dst}</var>
<arg>${match_value_dict}</arg>
<arg>destination</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="PASS" start="2026-10-20T23:19:39.753617" elapsed="0.000174"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:39.762745" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa57148b0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:39.762384" elapsed="0.000386"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:39.762970" elapsed="0.000361"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:39.763851" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;FLOOD&lt;/output-node-connector&gt;&lt;/out...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:39.763530" elapsed="0.000349"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:39.764054" elapsed="0.000121"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:39.764693" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;FLOOD&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination /&gt;&lt;/ethernet-match&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;81&lt;/id&gt;&lt;priority&gt;255&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:39.764427" elapsed="0.000316"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:39.764782" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>ethernet-destination</arg>
<arg>${EMPTY}</arg>
<arg>match/ethernet-match</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4dc5b10&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:39.761917" elapsed="0.002965"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:39.773835" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4d637e0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:39.773477" elapsed="0.000416"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:39.774099" elapsed="0.000394"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:39.775018" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;FLOOD&lt;/output-node-connector&gt;&lt;/out...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:39.774692" elapsed="0.000354"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:39.775222" elapsed="0.000149"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:39.775860" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;FLOOD&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination&gt;&lt;address&gt;ff:ff:ff:ff:ff:ff&lt;/address&gt;&lt;/ethernet-destination&gt;&lt;/ethernet-match&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;81&lt;/id&gt;&lt;priority&gt;255&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:39.775595" elapsed="0.000319"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:39.775954" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>address</arg>
<arg>${dst}</arg>
<arg>match/ethernet-match/ethernet-destination</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4dc5b10&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:39.773014" elapsed="0.003042"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:39.776106" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>${ethernet_match_dict}</arg>
<doc>Specific keyword for adding an ethernet match rules where the elements are given
in key/value pairs inside the ${match_value_dict} argument. This keyword will also remove any
existing ethernet-match elements from the flow before adding</doc>
<status status="PASS" start="2026-10-20T23:19:39.692175" elapsed="0.084026"/>
</kw>
<kw name="Set Flow IPv4 Match" owner="FlowLib">
<kw name="Clear Flow Matches" owner="FlowLib">
<kw name="Remove Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:39.780539" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4d63970&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:39.780132" elapsed="0.000434"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Remove Elements" owner="XML">
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Removes all elements matching `xpath` from the `source` structure.</doc>
<status status="PASS" start="2026-10-20T23:19:39.781137" elapsed="0.000283"/>
</kw>
<arg>Remove Elements</arg>
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-20T23:19:39.780762" elapsed="0.000709"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:39.781983" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;FLOOD&lt;/output-node-connector&gt;&lt;/out...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:39.781659" elapsed="0.000352"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:39.782191" elapsed="0.000145"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:39.782382" elapsed="0.000028"/>
</return>
<arg>${flow}</arg>
<arg>match/${match_element}</arg>
<doc>Removes the element at the given ${element_xpath} within the given &lt;FlowLib.Flow object at 0x756aa4dc5b10&gt;
object. The &lt;FlowLib.Flow object at 0x756aa4dc5b10&gt; object's xml representation will be updated to reflect this removal.</doc>
<status status="PASS" start="2026-10-20T23:19:39.779750" elapsed="0.002733"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:39.782524" elapsed="0.000024"/>
</return>
<arg>${flow}</arg>
<arg>match/ipv4-source</arg>
<doc>Will clean out any existing flow matches in the given &lt;FlowLib.Flow object at 0x756aa4dc5b10&gt; object</doc>
<status status="PASS" start="2026-10-20T23:19:39.778135" elapsed="0.004481"/>
</kw>
<kw name="Clear Flow Matches" owner="FlowLib">
<kw name="Remove Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:39.785191" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa57171f0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:39.784834" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Remove Elements" owner="XML">
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Removes all elements matching `xpath` from the `source` structure.</doc>
<status status="PASS" start="2026-10-20T23:19:39.785810" elapsed="0.000254"/>
</kw>
<arg>Remove Elements</arg>
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-20T23:19:39.785436" elapsed="0.000677"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:39.786643" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;FLOOD&lt;/output-node-connector&gt;&lt;/out...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:39.786298" elapsed="0.000373"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:39.786907" elapsed="0.000124"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:39.787076" elapsed="0.000026"/>
</return>
<arg>${flow}</arg>
<arg>match/${match_element}</arg>
<doc>Removes the element at the given ${element_xpath} within the given &lt;FlowLib.Flow object at 0x756aa4dc5b10&gt;
object. The &lt;FlowLib.Flow object at 0x756aa4dc5b10&gt; object's xml representation will be updated to reflect this removal.</doc>
<status status="PASS" start="2026-10-20T23:19:39.784455" elapsed="0.002721"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:39.787218" elapsed="0.000023"/>
</return>
<arg>${flow}</arg>
<arg>match/ipv4-destination</arg>
<doc>Will clean out any existing flow matches in the given &lt;FlowLib.Flow object at 0x756aa4dc5b10&gt; object</doc>
<status status="PASS" start="2026-10-20T23:19:39.782823" elapsed="0.004516"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-10-20T23:19:39.787686" level="INFO">${src} = 11.3.0.0/16</msg>
<var>${src}</var>
<arg>${match_value_dict}</arg>
<arg>source</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="PASS" start="2026-10-20T23:19:39.787534" elapsed="0.000176"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:39.796813" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa5716b60&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:39.796453" elapsed="0.000386"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:39.797039" elapsed="0.000366"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:39.797928" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;FLOOD&lt;/output-node-connector&gt;&lt;/out...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:39.797602" elapsed="0.000355"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:39.798132" elapsed="0.000121"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:39.798772" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;FLOOD&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination&gt;&lt;address&gt;ff:ff:ff:ff:ff:ff&lt;/address&gt;&lt;/ethernet-destination&gt;&lt;/ethernet-match&gt;&lt;ipv4-source&gt;11.3.0.0/16&lt;/ipv4-source&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;81&lt;/id&gt;&lt;priority&gt;255&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:39.798507" elapsed="0.000317"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:39.798863" elapsed="0.000028"/>
</return>
<arg>${flow}</arg>
<arg>ipv4-source</arg>
<arg>${src}</arg>
<arg>match</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4dc5b10&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:39.795991" elapsed="0.002973"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-10-20T23:19:39.799344" level="INFO">${dst} = 99.0.0.0/8</msg>
<var>${dst}</var>
<arg>${match_value_dict}</arg>
<arg>destination</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="PASS" start="2026-10-20T23:19:39.799167" elapsed="0.000202"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:39.808598" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4d62e30&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:39.808172" elapsed="0.000453"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:39.808831" elapsed="0.000336"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:39.809730" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;FLOOD&lt;/output-node-connector&gt;&lt;/out...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:39.809393" elapsed="0.000366"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:39.809935" elapsed="0.000120"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:39.810579" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;FLOOD&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination&gt;&lt;address&gt;ff:ff:ff:ff:ff:ff&lt;/address&gt;&lt;/ethernet-destination&gt;&lt;/ethernet-match&gt;&lt;ipv4-source&gt;11.3.0.0/16&lt;/ipv4-source&gt;&lt;ipv4-destination&gt;99.0.0.0/8&lt;/ipv4-destination&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;81&lt;/id&gt;&lt;priority&gt;255&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:39.810281" elapsed="0.000350"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:39.810671" elapsed="0.000030"/>
</return>
<arg>${flow}</arg>
<arg>ipv4-destination</arg>
<arg>${dst}</arg>
<arg>match</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4dc5b10&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:39.807700" elapsed="0.003117"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:39.810867" elapsed="0.000025"/>
</return>
<arg>${flow}</arg>
<arg>${ipv4_match_dict}</arg>
<doc>Specific keyword for adding an ipv4 match rules where the elements are given
in key/value pairs inside the ${match_value_dict} argument. This keyword will also remove any
existing ipv4 match elements from the flow before adding</doc>
<status status="PASS" start="2026-10-20T23:19:39.777776" elapsed="0.033187"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:39.811497" level="INFO">Flow XML is &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;FLOOD&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination&gt;&lt;address&gt;ff:ff:ff:ff:ff:ff&lt;/address&gt;&lt;/ethernet-destination&gt;&lt;/ethernet-match&gt;&lt;ipv4-source&gt;11.3.0.0/16&lt;/ipv4-source&gt;&lt;ipv4-destination&gt;99.0.0.0/8&lt;/ipv4-destination&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;81&lt;/id&gt;&lt;priority&gt;255&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>Flow XML is ${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:39.811182" elapsed="0.000368"/>
</kw>
<kw name="Call Method" owner="BuiltIn">
<arg>${test_switch}</arg>
<arg>create_flow_match_elements</arg>
<arg>${flow.xml}</arg>
<doc>Calls the named method of the given object with the provided arguments.</doc>
<status status="PASS" start="2026-10-20T23:19:39.811733" elapsed="0.000365"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:39.812627" level="INFO">['dl_src=00:ab:cd:ef:01:23,dl_dst=ff:ff:ff:ff:ff:ff,nw_src=11.3.0.0/16,nw_dst=99.0.0.0/8 actions=FLOOD', 'table=200']</msg>
<arg>${test_switch.flow_validations}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:39.812350" elapsed="0.000320"/>
</kw>
<kw name="Get Switch Datapath ID" owner="SwitchUtils">
<kw name="Configure Connection Index And Prompt Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${switch.connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-10-20T23:19:39.813809" elapsed="0.000157"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:39.813548" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:39.813529" elapsed="0.000495"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Set Client Configuration" owner="SSHLibrary">
<arg>prompt=${switch.mgmt_prompt}</arg>
<arg>timeout=5s</arg>
<doc>Update the `configuration` of the current connection.</doc>
<status status="PASS" start="2026-10-20T23:19:39.814342" elapsed="0.000278"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:39.814074" elapsed="0.000582"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:39.814059" elapsed="0.000621"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Switch Connection" owner="Telnet">
<arg>${switch.connection_index}</arg>
<doc>Switches between active connections using an index or an alias.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:39.814977" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:39.814732" elapsed="0.000295"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:39.814716" elapsed="0.000334"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Set Prompt" owner="Telnet">
<arg>${switch.mgmt_prompt}</arg>
<arg>True</arg>
<doc>Sets the prompt used by the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:39.815359" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:39.815100" elapsed="0.000312"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:39.815085" elapsed="0.000350"/>
</if>
<arg>${switch}</arg>
<doc>when using multiple switch connections (e.g. more than one switch device) this keyword will switch the current connection index and prompt so that the following
Read or Write actions happen on the correct device.</doc>
<status status="PASS" start="2026-10-20T23:19:39.813330" elapsed="0.002148"/>
</kw>
<kw name="Read Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Read" owner="SSHLibrary">
<doc>Consumes and returns everything available on the server output.</doc>
<status status="PASS" start="2026-10-20T23:19:39.816144" elapsed="0.000114"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:39.815902" elapsed="0.000386"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:39.815886" elapsed="0.000450"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Read" owner="Telnet">
<doc>Reads everything that is currently available in the output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:39.816616" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:39.816389" elapsed="0.000274"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:39.816374" elapsed="0.000311"/>
</if>
<arg>${switch}</arg>
<doc>Wraps the Read command so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:39.815692" elapsed="0.001036"/>
</kw>
<kw name="Execute Command Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:19:39.817845" level="INFO">Executing command '/sbin/ifconfig s1 | grep -o -E "([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}"'.</msg>
<msg time="2026-10-20T23:19:39.830880" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:19:39.830967" level="INFO">${output} = e2:07:e3:56:6d:42</msg>
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:19:39.817739" elapsed="0.013250"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:39.817459" elapsed="0.013565"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${output}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:39.831238" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:39.831049" elapsed="0.000240"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:39.817441" elapsed="0.013897"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Execute Command" owner="Telnet">
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes the given `command` and reads, logs, and returns resulting output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:39.831640" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:39.831393" elapsed="0.000332"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:39.832192" level="INFO">${output} = e2:07:e3:56:6d:42</msg>
<var>${output}</var>
<arg>${output}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:39.831927" elapsed="0.000288"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:39.831749" elapsed="0.000499"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:39.831377" elapsed="0.000890"/>
</if>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-20T23:19:39.832300" elapsed="0.000090"/>
</return>
<msg time="2026-10-20T23:19:39.832507" level="INFO">${switch.datapath_id_output_string} = e2:07:e3:56:6d:42</msg>
<var>${switch.datapath_id_output_string}</var>
<arg>${switch}</arg>
<arg>${switch.datapath_id_output_command}</arg>
<doc>Wraps the Execute Command keyword so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:39.816987" elapsed="0.015544"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:39.833023" level="INFO">e2:07:e3:56:6d:42</msg>
<arg>${switch.datapath_id_output_string}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:39.832753" elapsed="0.000311"/>
</kw>
<kw name="Call Method" owner="BuiltIn">
<arg>${switch}</arg>
<arg>update_datapath_id</arg>
<doc>Calls the named method of the given object with the provided arguments.</doc>
<status status="PASS" start="2026-10-20T23:19:39.833248" elapsed="0.000272"/>
</kw>
<return>
<value>${switch.datapath_id}</value>
<status status="PASS" start="2026-10-20T23:19:39.833564" elapsed="0.000026"/>
</return>
<msg time="2026-10-20T23:19:39.833737" level="INFO">${dpid_id} = 248523506740546</msg>
<var>${dpid_id}</var>
<arg>${test_switch}</arg>
<doc>Using the connection index for the given switch, will execute the command string
"datapath_id_output_command" which will store the output in switch.datapath_id_output_string.
The switch object method "update_datapath_id" is called which is assumed to place the ODL
friendly (decimal) version of the datapath id in to switch.datapath_id and the value is also
returned from this keyword.</doc>
<status status="PASS" start="2026-10-20T23:19:39.812872" elapsed="0.020889"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Add Flow To Controller And Verify" owner="FlowLib">
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:19:39.838463" level="INFO">PUT Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=81 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=81 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Content-Length': '665', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;FLOOD&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination&gt;&lt;address&gt;ff:ff:ff:ff:ff:ff&lt;/address&gt;&lt;/ethernet-destination&gt;&lt;/ethernet-match&gt;&lt;ipv4-source&gt;11.3.0.0/16&lt;/ipv4-source&gt;&lt;ipv4-destination&gt;99.0.0.0/8&lt;/ipv4-destination&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;81&lt;/id&gt;&lt;priority&gt;255&lt;/priority&gt;&lt;/flow&gt; 
 </msg>
<msg time="2026-10-20T23:19:39.838521" level="INFO">PUT Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=81 
 status=404, reason=Not Found 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-10-20T23:19:39.838612" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=81</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=${node_id}/flow-node-inventory:table=${table_id}/flow=${flow_id}</arg>
<arg>headers=${HEADERS_XML}</arg>
<arg>data=${flow_body}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:19:39.834996" elapsed="0.003989">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=81</status>
</kw>
<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-10-20T23:19:39.839239" elapsed="0.000021"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=${node_id}/flow-node-inventory:table=${table_id}/flow=${flow_id}?content=config</arg>
<arg>headers=${ACCEPT_XML}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:39.839438" elapsed="0.000020"/>
</kw>
<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-10-20T23:19:39.839681" elapsed="0.000019"/>
</kw>
<kw name="Compare Xml" owner="Common">
<arg>${flow_body}</arg>
<arg>${resp.text}</arg>
<doc>compare the two XML files to see if they contain the same data
but could be if different order.
It just split the xml in to lines and just check the line is in
the other file</doc>
<status status="NOT RUN" start="2026-10-20T23:19:39.839869" elapsed="0.000019"/>
</kw>
<arg>${flow.xml}</arg>
<arg>openflow%3A${dpid_id}</arg>
<arg>${flow.table_id}</arg>
<arg>${flow.id}</arg>
<doc>Push flow through REST-API and verify in data-store</doc>
<status status="FAIL" start="2026-10-20T23:19:39.834485" elapsed="0.005496">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=81</status>
</kw>
<kw name="Add Flow To Controller And Verify" owner="FlowLib">
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:19:40.848407" level="INFO">PUT Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=81 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=81 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Content-Length': '665', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;FLOOD&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination&gt;&lt;address&gt;ff:ff:ff:ff:ff:ff&lt;/address&gt;&lt;/ethernet-destination&gt;&lt;/ethernet-match&gt;&lt;ipv4-source&gt;11.3.0.0/16&lt;/ipv4-source&gt;&lt;ipv4-destination&gt;99.0.0.0/8&lt;/ipv4-destination&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;81&lt;/id&gt;&lt;priority&gt;255&lt;/priority&gt;&lt;/flow&gt; 
 </msg>
<msg time="2026-10-20T23:19:40.848649" level="INFO">PUT Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=81 
 status=404, reason=Not Found 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-10-20T23:19:40.848856" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=81</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=${node_id}/flow-node-inventory:table=${table_id}/flow=${flow_id}</arg>
<arg>headers=${HEADERS_XML}</arg>
<arg>data=${flow_body}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:19:40.842376" elapsed="0.007289">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=81</status>
</kw>
<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-10-20T23:19:40.850298" elapsed="0.000101"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=${node_id}/flow-node-inventory:table=${table_id}/flow=${flow_id}?content=config</arg>
<arg>headers=${ACCEPT_XML}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:40.850751" elapsed="0.000045"/>
</kw>
<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-10-20T23:19:40.851298" elapsed="0.000093"/>
</kw>
<kw name="Compare Xml" owner="Common">
<arg>${flow_body}</arg>
<arg>${resp.text}</arg>
<doc>compare the two XML files to see if they contain the same data
but could be if different order.
It just split the xml in to lines and just check the line is in
the other file</doc>
<status status="NOT RUN" start="2026-10-20T23:19:40.851774" elapsed="0.000042"/>
</kw>
<arg>${flow.xml}</arg>
<arg>openflow%3A${dpid_id}</arg>
<arg>${flow.table_id}</arg>
<arg>${flow.id}</arg>
<doc>Push flow through REST-API and verify in data-store</doc>
<status status="FAIL" start="2026-10-20T23:19:40.840909" elapsed="0.011110">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=81</status>
</kw>
<kw name="Add Flow To Controller And Verify" owner="FlowLib">
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:19:41.860642" level="INFO">PUT Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=81 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=81 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Content-Length': '665', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;FLOOD&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination&gt;&lt;address&gt;ff:ff:ff:ff:ff:ff&lt;/address&gt;&lt;/ethernet-destination&gt;&lt;/ethernet-match&gt;&lt;ipv4-source&gt;11.3.0.0/16&lt;/ipv4-source&gt;&lt;ipv4-destination&gt;99.0.0.0/8&lt;/ipv4-destination&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;81&lt;/id&gt;&lt;priority&gt;255&lt;/priority&gt;&lt;/flow&gt; 
 </msg>
<msg time="2026-10-20T23:19:41.860779" level="INFO">PUT Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=81 
 status=404, reason=Not Found 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-10-20T23:19:41.860979" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=81</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=${node_id}/flow-node-inventory:table=${table_id}/flow=${flow_id}</arg>
<arg>headers=${HEADERS_XML}</arg>
<arg>data=${flow_body}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:19:41.854228" elapsed="0.007651">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=81</status>
</kw>
<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-10-20T23:19:41.862558" elapsed="0.000050"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=${node_id}/flow-node-inventory:table=${table_id}/flow=${flow_id}?content=config</arg>
<arg>headers=${ACCEPT_XML}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:41.862957" elapsed="0.000043"/>
</kw>
<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-10-20T23:19:41.863579" elapsed="0.000045"/>
</kw>
<kw name="Compare Xml" owner="Common">
<arg>${flow_body}</arg>
<arg>${resp.text}</arg>
<doc>compare the two XML files to see if they contain the same data
but could be if different order.
It just split the xml in to lines and just check the line is in
the other file</doc>
<status status="NOT RUN" start="2026-10-20T23:19:41.864560" elapsed="0.000048"/>
</kw>
<arg>${flow.xml}</arg>
<arg>openflow%3A${dpid_id}</arg>
<arg>${flow.table_id}</arg>
<arg>${flow.id}</arg>
<doc>Push flow through REST-API and verify in data-store</doc>
<status status="FAIL" start="2026-10-20T23:19:41.852818" elapsed="0.011998">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=81</status>
</kw>
<kw name="Add Flow To Controller And Verify" owner="FlowLib">
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:19:42.873041" level="INFO">PUT Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=81 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=81 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Content-Length': '665', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;FLOOD&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination&gt;&lt;address&gt;ff:ff:ff:ff:ff:ff&lt;/address&gt;&lt;/ethernet-destination&gt;&lt;/ethernet-match&gt;&lt;ipv4-source&gt;11.3.0.0/16&lt;/ipv4-source&gt;&lt;ipv4-destination&gt;99.0.0.0/8&lt;/ipv4-destination&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;81&lt;/id&gt;&lt;priority&gt;255&lt;/priority&gt;&lt;/flow&gt; 
 </msg>
<msg time="2026-10-20T23:19:42.873267" level="INFO">PUT Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=81 
 status=404, reason=Not Found 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-10-20T23:19:42.873533" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=81</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=${node_id}/flow-node-inventory:table=${table_id}/flow=${flow_id}</arg>
<arg>headers=${HEADERS_XML}</arg>
<arg>data=${flow_body}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:19:42.867026" elapsed="0.007249">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=81</status>
</kw>
<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-10-20T23:19:42.874925" elapsed="0.000049"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=${node_id}/flow-node-inventory:table=${table_id}/flow=${flow_id}?content=config</arg>
<arg>headers=${ACCEPT_XML}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:42.875352" elapsed="0.000062"/>
</kw>
<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-10-20T23:19:42.875914" elapsed="0.000043"/>
</kw>
<kw name="Compare Xml" owner="Common">
<arg>${flow_body}</arg>
<arg>${resp.text}</arg>
<doc>compare the two XML files to see if they contain the same data
but could be if different order.
It just split the xml in to lines and just check the line is in
the other file</doc>
<status status="NOT RUN" start="2026-10-20T23:19:42.876359" elapsed="0.000063"/>
</kw>
<arg>${flow.xml}</arg>
<arg>openflow%3A${dpid_id}</arg>
<arg>${flow.table_id}</arg>
<arg>${flow.id}</arg>
<doc>Push flow through REST-API and verify in data-store</doc>
<status status="FAIL" start="2026-10-20T23:19:42.865654" elapsed="0.010975">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=81</status>
</kw>
<msg time="2026-10-20T23:19:42.876830" level="FAIL">Keyword 'Add Flow To Controller And Verify' failed after retrying for 3 seconds. The last error was: HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=81</msg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Add Flow To Controller And Verify</arg>
<arg>${flow.xml}</arg>
<arg>openflow%3A${dpid_id}</arg>
<arg>${flow.table_id}</arg>
<arg>${flow.id}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-10-20T23:19:39.833982" elapsed="3.043046">Keyword 'Add Flow To Controller And Verify' failed after retrying for 3 seconds. The last error was: HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=81</status>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>3s</arg>
<arg>1s</arg>
<arg>Validate Switch Output</arg>
<arg>${test_switch}</arg>
<arg>${test_switch.dump_all_flows}</arg>
<arg>${test_switch.flow_validations}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:42.877616" elapsed="0.000047"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>3s</arg>
<arg>1s</arg>
<arg>Remove Flow From Controller And Verify</arg>
<arg>openflow%3A${dpid_id}</arg>
<arg>${flow.table_id}</arg>
<arg>${flow.id}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:42.878153" elapsed="0.000043"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>3s</arg>
<arg>1s</arg>
<arg>Validate Switch Output</arg>
<arg>${test_switch}</arg>
<arg>${test_switch.dump_all_flows}</arg>
<arg>${test_switch.flow_validations}</arg>
<arg>false</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:42.878729" elapsed="0.000042"/>
</kw>
<arg>${TEST_NAME}</arg>
<arg>200</arg>
<arg>81</arg>
<arg>255</arg>
<status status="FAIL" start="2026-10-20T23:19:39.519481" elapsed="3.359497">Keyword 'Add Flow To Controller And Verify' failed after retrying for 3 seconds. The last error was: HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=81</status>
</kw>
<doc>OF1.3 OFPP_FLOOD = 0xfffffffb, /* All physical ports in VLAN, except input port and those blocked or link down. */</doc>
<tag>flood</tag>
<status status="FAIL" start="2026-10-20T23:19:39.518189" elapsed="3.361115">Keyword 'Add Flow To Controller And Verify' failed after retrying for 3 seconds. The last error was: HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=81</status>
</test>
<test id="s1-s4-s2-t5" name="ALL" line="68">
<kw name="Create And Remove Flow">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:19:42.883185" level="INFO">${ethernet_match_dict} = {'type': '0x800', 'destination': 'ff:ff:ff:ff:ff:ff', 'source': '00:ab:cd:ef:01:23'}</msg>
<var>${ethernet_match_dict}</var>
<arg>type=${eth_type}</arg>
<arg>destination=${eth_dst}</arg>
<arg>source=${eth_src}</arg>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:19:42.882147" elapsed="0.001096"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:19:42.884631" level="INFO">${ipv4_match_dict} = {'source': '11.3.0.0/16', 'destination': '99.0.0.0/8'}</msg>
<var>${ipv4_match_dict}</var>
<arg>source=${ipv4_src}</arg>
<arg>destination=${ipv4_dst}</arg>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:19:42.883781" elapsed="0.000906"/>
</kw>
<kw name="Create Inventory Flow" owner="FlowLib">
<kw name="Make Inventory Flow" owner="FlowLib">
<msg time="2026-10-20T23:19:42.886031" level="INFO">${flow} = &lt;FlowLib.Flow object at 0x756aa4c0dbd0&gt;</msg>
<var>${flow}</var>
<doc>Robot Keyword to create and return an instance of the Flow
class.</doc>
<status status="PASS" start="2026-10-20T23:19:42.885780" elapsed="0.000306"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:42.886177" elapsed="0.000078"/>
</return>
<msg time="2026-10-20T23:19:42.886534" level="INFO">${flow} = &lt;FlowLib.Flow object at 0x756aa4c0dbd0&gt;</msg>
<var>${flow}</var>
<doc>Calls FlowLib.Make_Inventory_Flow function and initializes and sanitizes
the basic flow elements that can be given to flow:inventory</doc>
<status status="PASS" start="2026-10-20T23:19:42.885062" elapsed="0.001526"/>
</kw>
<kw name="Set &quot;${flow}&quot; &quot;table_id&quot; With &quot;${table_id}&quot;" owner="FlowLib" source_name="Set &quot;${flow}&quot; &quot;${property}&quot; With &quot;${property_val}&quot;">
<if>
<branch type="IF" condition="&quot;table_id&quot; != &quot;${property}&quot; and &quot;cookie_mask&quot; != &quot;${property}&quot;">
<kw name="Replace String" owner="String">
<var>${property}</var>
<arg>${property}</arg>
<arg>_</arg>
<arg>-</arg>
<doc>Replaces `search_for` in the given `string` with `replace_with`.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:42.891510" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:42.890824" elapsed="0.000897"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:42.892837" level="INFO">${property} = table_id</msg>
<var>${property}</var>
<arg>${property}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:42.892182" elapsed="0.000712"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:42.891779" elapsed="0.001190"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:42.890783" elapsed="0.002231"/>
</if>
<kw name="Remove Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:42.898367" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4d63920&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:42.897560" elapsed="0.000885"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Remove Elements" owner="XML">
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Removes all elements matching `xpath` from the `source` structure.</doc>
<status status="PASS" start="2026-10-20T23:19:42.899789" elapsed="0.000595"/>
</kw>
<arg>Remove Elements</arg>
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-20T23:19:42.898894" elapsed="0.001627"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:42.901630" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:42.900942" elapsed="0.000749"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:42.902087" elapsed="0.000306"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:42.902517" elapsed="0.000062"/>
</return>
<arg>${flow}</arg>
<arg>${property}</arg>
<doc>Removes the element at the given ${element_xpath} within the given &lt;FlowLib.Flow object at 0x756aa4c0dbd0&gt;
object. The &lt;FlowLib.Flow object at 0x756aa4c0dbd0&gt; object's xml representation will be updated to reflect this removal.</doc>
<status status="PASS" start="2026-10-20T23:19:42.896663" elapsed="0.006082"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:42.918911" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4d61fd0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:42.918449" elapsed="0.000498"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:42.919227" elapsed="0.000509"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:42.920434" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:42.920008" elapsed="0.000465"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:42.920719" elapsed="0.000169"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:42.921648" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:42.921228" elapsed="0.000482"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:42.921765" elapsed="0.000038"/>
</return>
<arg>${flow}</arg>
<arg>${property}</arg>
<arg>${property_val}</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4c0dbd0&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:42.917789" elapsed="0.004117"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>${property}</arg>
<arg>${property_val}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:42.922162" elapsed="0.000214"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:42.922457" elapsed="0.000035"/>
</return>
<doc>Embedded variables to make higher level keywords more readable.
There are some cases where the python attribute uses an underscore,
but a hyphen needs to be used. This seems inconsistent, and may need
to be looked at from the openflow plugin perspective.</doc>
<status status="PASS" start="2026-10-20T23:19:42.890203" elapsed="0.032391"/>
</kw>
<kw name="Set &quot;${flow}&quot; &quot;id&quot; With &quot;${flow_id}&quot;" owner="FlowLib" source_name="Set &quot;${flow}&quot; &quot;${property}&quot; With &quot;${property_val}&quot;">
<if>
<branch type="IF" condition="&quot;table_id&quot; != &quot;${property}&quot; and &quot;cookie_mask&quot; != &quot;${property}&quot;">
<kw name="Replace String" owner="String">
<msg time="2026-10-20T23:19:42.925874" level="INFO">${property} = id</msg>
<var>${property}</var>
<arg>${property}</arg>
<arg>_</arg>
<arg>-</arg>
<doc>Replaces `search_for` in the given `string` with `replace_with`.</doc>
<status status="PASS" start="2026-10-20T23:19:42.925550" elapsed="0.000371"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:42.925147" elapsed="0.000845"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${property}</var>
<arg>${property}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:42.926443" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:42.926038" elapsed="0.000522"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:42.925122" elapsed="0.001477"/>
</if>
<kw name="Remove Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:42.929775" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4d61120&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:42.929257" elapsed="0.000554"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Remove Elements" owner="XML">
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Removes all elements matching `xpath` from the `source` structure.</doc>
<status status="PASS" start="2026-10-20T23:19:42.930642" elapsed="0.000347"/>
</kw>
<arg>Remove Elements</arg>
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-20T23:19:42.930086" elapsed="0.000973"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:42.931815" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:42.931420" elapsed="0.000432"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:42.932099" elapsed="0.000167"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:42.932351" elapsed="0.000041"/>
</return>
<arg>${flow}</arg>
<arg>${property}</arg>
<doc>Removes the element at the given ${element_xpath} within the given &lt;FlowLib.Flow object at 0x756aa4c0dbd0&gt;
object. The &lt;FlowLib.Flow object at 0x756aa4c0dbd0&gt; object's xml representation will be updated to reflect this removal.</doc>
<status status="PASS" start="2026-10-20T23:19:42.928720" elapsed="0.003791"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:42.943340" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4d61a80&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:42.943000" elapsed="0.000367"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:42.943578" elapsed="0.000334"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:42.944417" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;88&lt;/id&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:42.944106" elapsed="0.000339"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:42.944620" elapsed="0.000120"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:42.945226" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;88&lt;/id&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:42.944960" elapsed="0.000309"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:42.945323" elapsed="0.000028"/>
</return>
<arg>${flow}</arg>
<arg>${property}</arg>
<arg>${property_val}</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4c0dbd0&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:42.942561" elapsed="0.002878"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>${property}</arg>
<arg>${property_val}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:42.945620" elapsed="0.000130"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:42.945794" elapsed="0.000025"/>
</return>
<doc>Embedded variables to make higher level keywords more readable.
There are some cases where the python attribute uses an underscore,
but a hyphen needs to be used. This seems inconsistent, and may need
to be looked at from the openflow plugin perspective.</doc>
<status status="PASS" start="2026-10-20T23:19:42.924798" elapsed="0.021091"/>
</kw>
<kw name="Set &quot;${flow}&quot; &quot;priority&quot; With &quot;${priority}&quot;" owner="FlowLib" source_name="Set &quot;${flow}&quot; &quot;${property}&quot; With &quot;${property_val}&quot;">
<if>
<branch type="IF" condition="&quot;table_id&quot; != &quot;${property}&quot; and &quot;cookie_mask&quot; != &quot;${property}&quot;">
<kw name="Replace String" owner="String">
<msg time="2026-10-20T23:19:42.948159" level="INFO">${property} = priority</msg>
<var>${property}</var>
<arg>${property}</arg>
<arg>_</arg>
<arg>-</arg>
<doc>Replaces `search_for` in the given `string` with `replace_with`.</doc>
<status status="PASS" start="2026-10-20T23:19:42.947977" elapsed="0.000206"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:42.947708" elapsed="0.000511"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${property}</var>
<arg>${property}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:42.948448" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:42.948242" elapsed="0.000257"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:42.947691" elapsed="0.000828"/>
</if>
<kw name="Remove Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:42.950680" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4d63f10&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:42.950344" elapsed="0.000361"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Remove Elements" owner="XML">
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Removes all elements matching `xpath` from the `source` structure.</doc>
<status status="PASS" start="2026-10-20T23:19:42.951273" elapsed="0.000273"/>
</kw>
<arg>Remove Elements</arg>
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-20T23:19:42.950900" elapsed="0.000695"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:42.952055" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;88&lt;/id&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:42.951779" elapsed="0.000303"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:42.952255" elapsed="0.000154"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:42.952455" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>${property}</arg>
<doc>Removes the element at the given ${element_xpath} within the given &lt;FlowLib.Flow object at 0x756aa4c0dbd0&gt;
object. The &lt;FlowLib.Flow object at 0x756aa4c0dbd0&gt; object's xml representation will be updated to reflect this removal.</doc>
<status status="PASS" start="2026-10-20T23:19:42.949954" elapsed="0.002599"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:42.961410" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4d63e70&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:42.961058" elapsed="0.000379"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:42.961638" elapsed="0.000332"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:42.962482" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;88&lt;/id&gt;&lt;priority&gt;42&lt;/priority&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:42.962164" elapsed="0.000345"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:42.962685" elapsed="0.000127"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:42.963302" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;88&lt;/id&gt;&lt;priority&gt;42&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:42.963034" elapsed="0.000327"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:42.963412" elapsed="0.000028"/>
</return>
<arg>${flow}</arg>
<arg>${property}</arg>
<arg>${property_val}</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4c0dbd0&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:42.960627" elapsed="0.002887"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>${property}</arg>
<arg>${property_val}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:42.963696" elapsed="0.000134"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:42.963874" elapsed="0.000025"/>
</return>
<doc>Embedded variables to make higher level keywords more readable.
There are some cases where the python attribute uses an underscore,
but a hyphen needs to be used. This seems inconsistent, and may need
to be looked at from the openflow plugin perspective.</doc>
<status status="PASS" start="2026-10-20T23:19:42.947457" elapsed="0.016513"/>
</kw>
<kw name="Clear Flow Actions" owner="FlowLib">
<kw name="Remove Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:42.966616" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4d603b0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:42.966251" elapsed="0.000390"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Remove Elements" owner="XML">
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Removes all elements matching `xpath` from the `source` structure.</doc>
<status status="PASS" start="2026-10-20T23:19:42.967206" elapsed="0.000285"/>
</kw>
<arg>Remove Elements</arg>
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-20T23:19:42.966837" elapsed="0.000703"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:42.968005" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;88&lt;/id&gt;&lt;priority&gt;42&lt;/priority&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:42.967727" elapsed="0.000305"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:42.968204" elapsed="0.000134"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:42.968382" elapsed="0.000039"/>
</return>
<arg>${flow}</arg>
<arg>instructions/instruction</arg>
<doc>Removes the element at the given ${element_xpath} within the given &lt;FlowLib.Flow object at 0x756aa4c0dbd0&gt;
object. The &lt;FlowLib.Flow object at 0x756aa4c0dbd0&gt; object's xml representation will be updated to reflect this removal.</doc>
<status status="PASS" start="2026-10-20T23:19:42.965885" elapsed="0.002610"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:42.968538" elapsed="0.000023"/>
</return>
<arg>${flow}</arg>
<doc>Will clean out any existing flow actions in the given &lt;FlowLib.Flow object at 0x756aa4c0dbd0&gt; object</doc>
<status status="PASS" start="2026-10-20T23:19:42.964148" elapsed="0.004481"/>
</kw>
<kw name="Set Flow Output Action" owner="FlowLib">
<kw name="Set Flow Action" owner="FlowLib">
<kw name="Remove Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:42.971647" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4c1d580&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:42.971293" elapsed="0.000379"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Remove Elements" owner="XML">
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Removes all elements matching `xpath` from the `source` structure.</doc>
<status status="PASS" start="2026-10-20T23:19:42.972233" elapsed="0.000279"/>
</kw>
<arg>Remove Elements</arg>
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-20T23:19:42.971867" elapsed="0.000695"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:42.973022" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;88&lt;/id&gt;&lt;priority&gt;42&lt;/priority&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:42.972746" elapsed="0.000303"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:42.973221" elapsed="0.000134"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:42.973409" elapsed="0.000028"/>
</return>
<arg>${flow}</arg>
<arg>instruction</arg>
<doc>Removes the element at the given ${element_xpath} within the given &lt;FlowLib.Flow object at 0x756aa4c0dbd0&gt;
object. The &lt;FlowLib.Flow object at 0x756aa4c0dbd0&gt; object's xml representation will be updated to reflect this removal.</doc>
<status status="PASS" start="2026-10-20T23:19:42.970935" elapsed="0.002613"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:42.982422" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4c1d760&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:42.982069" elapsed="0.000379"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:42.982648" elapsed="0.000333"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:42.983486" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction /&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;88&lt;/id&gt;&lt;priority&gt;42&lt;/priority&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:42.983174" elapsed="0.000340"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:42.983689" elapsed="0.000120"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:42.984323" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction /&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;88&lt;/id&gt;&lt;priority&gt;42&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:42.984036" elapsed="0.000333"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:42.984420" elapsed="0.000028"/>
</return>
<arg>${flow}</arg>
<arg>instruction</arg>
<arg>${EMPTY}</arg>
<arg>instructions</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4c0dbd0&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:42.981620" elapsed="0.002902"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:42.994201" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4d613f0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:42.993872" elapsed="0.000355"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:42.994451" elapsed="0.000341"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:42.995274" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;88&lt;/id&gt;&lt;priority&gt;42&lt;/priority&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:42.994988" elapsed="0.000328"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:42.995504" elapsed="0.000121"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:42.996107" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;88&lt;/id&gt;&lt;priority&gt;42&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:42.995844" elapsed="0.000308"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:42.996190" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>order</arg>
<arg>${instruction_order}</arg>
<arg>instructions/instruction</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4c0dbd0&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:42.993435" elapsed="0.002855"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:43.005169" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa70e7c90&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:43.004839" elapsed="0.000356"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:43.005422" elapsed="0.000341"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:43.006255" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions /&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;88&lt;/id&gt;&lt;priority&gt;42&lt;/priorit...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:43.005957" elapsed="0.000327"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:43.006484" elapsed="0.000120"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:43.007090" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions /&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;88&lt;/id&gt;&lt;priority&gt;42&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:43.006824" elapsed="0.000311"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:43.007205" elapsed="0.000028"/>
</return>
<arg>${flow}</arg>
<arg>apply-actions</arg>
<arg>${EMPTY}</arg>
<arg>instructions/instruction</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4c0dbd0&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:43.004382" elapsed="0.002941"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:43.016224" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4d637e0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:43.015894" elapsed="0.000356"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:43.016477" elapsed="0.000341"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:43.017326" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action /&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;88&lt;/...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:43.017014" elapsed="0.000341"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:43.017542" elapsed="0.000120"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:43.018144" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action /&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;88&lt;/id&gt;&lt;priority&gt;42&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:43.017880" elapsed="0.000309"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:43.018228" elapsed="0.000028"/>
</return>
<arg>${flow}</arg>
<arg>action</arg>
<arg>${EMPTY}</arg>
<arg>instructions/instruction/apply-actions</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4c0dbd0&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:43.015449" elapsed="0.002898"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:43.027261" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4c1c950&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:43.026925" elapsed="0.000362"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:43.027519" elapsed="0.000343"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:43.028373" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:43.028059" elapsed="0.000353"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:43.028591" elapsed="0.000120"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:43.029197" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;88&lt;/id&gt;&lt;priority&gt;42&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:43.028933" elapsed="0.000311"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:43.029285" elapsed="0.000045"/>
</return>
<arg>${flow}</arg>
<arg>order</arg>
<arg>${action_order}</arg>
<arg>instructions/instruction/apply-actions/action</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4c0dbd0&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:43.026487" elapsed="0.002930"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:43.038504" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa70e7fb0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:43.038134" elapsed="0.000396"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:43.038731" elapsed="0.000340"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:43.039610" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action /&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:43.039268" elapsed="0.000371"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:43.039815" elapsed="0.000163"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:43.040507" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action /&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;88&lt;/id&gt;&lt;priority&gt;42&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:43.040202" elapsed="0.000352"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:43.040593" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>${action}</arg>
<arg>${action_val}</arg>
<arg>instructions/instruction/apply-actions/action</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4c0dbd0&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:43.037686" elapsed="0.003008"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:43.040742" elapsed="0.000024"/>
</return>
<arg>${flow}</arg>
<arg>${instruction_order}</arg>
<arg>${action_order}</arg>
<arg>output-action</arg>
<doc>Will remove the instruction element first, then add the proper xml structure
to implement the action as given in the arguments</doc>
<status status="PASS" start="2026-10-20T23:19:42.969187" elapsed="0.071649"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:43.049791" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4d63e70&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:43.049443" elapsed="0.000375"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:43.050018" elapsed="0.000360"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:43.050897" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;ALL&lt;/output-node-connector&gt;&lt;/outpu...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:43.050585" elapsed="0.000341"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:43.051100" elapsed="0.000119"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:43.051727" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;ALL&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;88&lt;/id&gt;&lt;priority&gt;42&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:43.051461" elapsed="0.000314"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:43.051814" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>output-node-connector</arg>
<arg>${output_port}</arg>
<arg>instructions/instruction/apply-actions/action/output-action</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4c0dbd0&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:43.048973" elapsed="0.002941"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:43.051963" elapsed="0.000023"/>
</return>
<arg>${flow}</arg>
<arg>0</arg>
<arg>0</arg>
<arg>${output_port}</arg>
<status status="PASS" start="2026-10-20T23:19:42.968791" elapsed="0.083265"/>
</kw>
<kw name="Set Flow Ethernet Match" owner="FlowLib">
<kw name="Clear Flow Matches" owner="FlowLib">
<kw name="Remove Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:43.056184" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4c1cae0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:43.055845" elapsed="0.000364"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Remove Elements" owner="XML">
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Removes all elements matching `xpath` from the `source` structure.</doc>
<status status="PASS" start="2026-10-20T23:19:43.056803" elapsed="0.000249"/>
</kw>
<arg>Remove Elements</arg>
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-20T23:19:43.056433" elapsed="0.000669"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:43.057611" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;ALL&lt;/output-node-connector&gt;&lt;/outpu...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:43.057287" elapsed="0.000353"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:43.057814" elapsed="0.000119"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:43.057978" elapsed="0.000026"/>
</return>
<arg>${flow}</arg>
<arg>match/${match_element}</arg>
<doc>Removes the element at the given ${element_xpath} within the given &lt;FlowLib.Flow object at 0x756aa4c0dbd0&gt;
object. The &lt;FlowLib.Flow object at 0x756aa4c0dbd0&gt; object's xml representation will be updated to reflect this removal.</doc>
<status status="PASS" start="2026-10-20T23:19:43.055465" elapsed="0.002612"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:43.058126" elapsed="0.000023"/>
</return>
<arg>${flow}</arg>
<arg>match/ethernet-match</arg>
<doc>Will clean out any existing flow matches in the given &lt;FlowLib.Flow object at 0x756aa4c0dbd0&gt; object</doc>
<status status="PASS" start="2026-10-20T23:19:43.053870" elapsed="0.004382"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:43.067287" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4d63c90&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:43.066944" elapsed="0.000385"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:43.067542" elapsed="0.000333"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:43.068393" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;ALL&lt;/output-node-connector&gt;&lt;/outpu...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:43.068069" elapsed="0.000364"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:43.068610" elapsed="0.000120"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:43.069218" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;ALL&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match /&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;88&lt;/id&gt;&lt;priority&gt;42&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:43.068955" elapsed="0.000312"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:43.069322" elapsed="0.000029"/>
</return>
<arg>${flow}</arg>
<arg>ethernet-match</arg>
<arg>${EMPTY}</arg>
<arg>match</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4c0dbd0&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:43.066491" elapsed="0.002947"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-10-20T23:19:43.069795" level="INFO">${type} = 0x800</msg>
<var>${type}</var>
<arg>${match_value_dict}</arg>
<arg>type</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="PASS" start="2026-10-20T23:19:43.069638" elapsed="0.000180"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:43.078715" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4d611c0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:43.078349" elapsed="0.000397"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:43.078946" elapsed="0.000337"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:43.079814" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;ALL&lt;/output-node-connector&gt;&lt;/outpu...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:43.079505" elapsed="0.000338"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:43.080017" elapsed="0.000127"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:43.080660" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;ALL&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type /&gt;&lt;/ethernet-match&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;88&lt;/id&gt;&lt;priority&gt;42&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:43.080384" elapsed="0.000324"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:43.080747" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>ethernet-type</arg>
<arg>${EMPTY}</arg>
<arg>match/ethernet-match</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4c0dbd0&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:43.077893" elapsed="0.002954"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:43.089629" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4c1ca40&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:43.089255" elapsed="0.000400"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:43.089853" elapsed="0.000336"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:43.090727" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;ALL&lt;/output-node-connector&gt;&lt;/outpu...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:43.090412" elapsed="0.000344"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:43.090961" elapsed="0.000123"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:43.091605" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;ALL&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;/ethernet-match&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;88&lt;/id&gt;&lt;priority&gt;42&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:43.091320" elapsed="0.000334"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:43.091693" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>type</arg>
<arg>${type}</arg>
<arg>match/ethernet-match/ethernet-type</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4c0dbd0&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:43.088826" elapsed="0.002969"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-10-20T23:19:43.092144" level="INFO">${src} = 00:ab:cd:ef:01:23</msg>
<var>${src}</var>
<arg>${match_value_dict}</arg>
<arg>source</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="PASS" start="2026-10-20T23:19:43.091993" elapsed="0.000174"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:43.101221" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa8aa08b0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:43.100874" elapsed="0.000373"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:43.101474" elapsed="0.000339"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:43.102337" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;ALL&lt;/output-node-connector&gt;&lt;/outpu...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:43.102006" elapsed="0.000360"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:43.102560" elapsed="0.000122"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:43.103162" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;ALL&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source /&gt;&lt;/ethernet-match&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;88&lt;/id&gt;&lt;priority&gt;42&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:43.102900" elapsed="0.000311"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:43.103250" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>ethernet-source</arg>
<arg>${EMPTY}</arg>
<arg>match/ethernet-match</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4c0dbd0&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:43.100426" elapsed="0.002947"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:43.112208" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa5717920&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:43.111850" elapsed="0.000383"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:43.112462" elapsed="0.000342"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:43.113331" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;ALL&lt;/output-node-connector&gt;&lt;/outpu...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:43.112998" elapsed="0.000362"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:43.113548" elapsed="0.000122"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:43.114186" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;ALL&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;/ethernet-match&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;88&lt;/id&gt;&lt;priority&gt;42&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:43.113922" elapsed="0.000314"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:43.114275" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>address</arg>
<arg>${src}</arg>
<arg>match/ethernet-match/ethernet-source</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4c0dbd0&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:43.111419" elapsed="0.003020"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-10-20T23:19:43.114793" level="INFO">${dst} = ff:ff:ff:ff:ff:ff</msg>
<var>${dst}</var>
<arg>${match_value_dict}</arg>
<arg>destination</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="PASS" start="2026-10-20T23:19:43.114641" elapsed="0.000175"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:43.123730" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4c1cbd0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:43.123359" elapsed="0.000397"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:43.123955" elapsed="0.000338"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:43.124841" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;ALL&lt;/output-node-connector&gt;&lt;/outpu...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:43.124520" elapsed="0.000349"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:43.125045" elapsed="0.000120"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:43.125680" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;ALL&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination /&gt;&lt;/ethernet-match&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;88&lt;/id&gt;&lt;priority&gt;42&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:43.125413" elapsed="0.000318"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:43.125770" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>ethernet-destination</arg>
<arg>${EMPTY}</arg>
<arg>match/ethernet-match</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4c0dbd0&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:43.122897" elapsed="0.002974"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:43.135260" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa8aa08b0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:43.134878" elapsed="0.000409"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:43.135520" elapsed="0.000346"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:43.136416" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;ALL&lt;/output-node-connector&gt;&lt;/outpu...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:43.136062" elapsed="0.000383"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:43.136620" elapsed="0.000122"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:43.137227" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;ALL&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination&gt;&lt;address&gt;ff:ff:ff:ff:ff:ff&lt;/address&gt;&lt;/ethernet-destination&gt;&lt;/ethernet-match&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;88&lt;/id&gt;&lt;priority&gt;42&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:43.136962" elapsed="0.000316"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:43.137337" elapsed="0.000032"/>
</return>
<arg>${flow}</arg>
<arg>address</arg>
<arg>${dst}</arg>
<arg>match/ethernet-match/ethernet-destination</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4c0dbd0&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:43.134365" elapsed="0.003091"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:43.137506" elapsed="0.000024"/>
</return>
<arg>${flow}</arg>
<arg>${ethernet_match_dict}</arg>
<doc>Specific keyword for adding an ethernet match rules where the elements are given
in key/value pairs inside the ${match_value_dict} argument. This keyword will also remove any
existing ethernet-match elements from the flow before adding</doc>
<status status="PASS" start="2026-10-20T23:19:43.053513" elapsed="0.084086"/>
</kw>
<kw name="Set Flow IPv4 Match" owner="FlowLib">
<kw name="Clear Flow Matches" owner="FlowLib">
<kw name="Remove Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:43.141818" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4c1cea0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:43.141458" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Remove Elements" owner="XML">
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Removes all elements matching `xpath` from the `source` structure.</doc>
<status status="PASS" start="2026-10-20T23:19:43.142441" elapsed="0.000255"/>
</kw>
<arg>Remove Elements</arg>
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-20T23:19:43.142042" elapsed="0.000704"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:43.143249" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;ALL&lt;/output-node-connector&gt;&lt;/outpu...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:43.142930" elapsed="0.000347"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:43.143476" elapsed="0.000122"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:43.143642" elapsed="0.000026"/>
</return>
<arg>${flow}</arg>
<arg>match/${match_element}</arg>
<doc>Removes the element at the given ${element_xpath} within the given &lt;FlowLib.Flow object at 0x756aa4c0dbd0&gt;
object. The &lt;FlowLib.Flow object at 0x756aa4c0dbd0&gt; object's xml representation will be updated to reflect this removal.</doc>
<status status="PASS" start="2026-10-20T23:19:43.141048" elapsed="0.002693"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:43.143784" elapsed="0.000023"/>
</return>
<arg>${flow}</arg>
<arg>match/ipv4-source</arg>
<doc>Will clean out any existing flow matches in the given &lt;FlowLib.Flow object at 0x756aa4c0dbd0&gt; object</doc>
<status status="PASS" start="2026-10-20T23:19:43.139456" elapsed="0.004421"/>
</kw>
<kw name="Clear Flow Matches" owner="FlowLib">
<kw name="Remove Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:43.146586" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4d632e0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:43.146189" elapsed="0.000423"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Remove Elements" owner="XML">
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Removes all elements matching `xpath` from the `source` structure.</doc>
<status status="PASS" start="2026-10-20T23:19:43.147176" elapsed="0.000295"/>
</kw>
<arg>Remove Elements</arg>
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-20T23:19:43.146807" elapsed="0.000714"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:43.148028" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;ALL&lt;/output-node-connector&gt;&lt;/outpu...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:43.147706" elapsed="0.000350"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:43.148228" elapsed="0.000136"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:43.148422" elapsed="0.000028"/>
</return>
<arg>${flow}</arg>
<arg>match/${match_element}</arg>
<doc>Removes the element at the given ${element_xpath} within the given &lt;FlowLib.Flow object at 0x756aa4c0dbd0&gt;
object. The &lt;FlowLib.Flow object at 0x756aa4c0dbd0&gt; object's xml representation will be updated to reflect this removal.</doc>
<status status="PASS" start="2026-10-20T23:19:43.145806" elapsed="0.002718"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:43.148566" elapsed="0.000024"/>
</return>
<arg>${flow}</arg>
<arg>match/ipv4-destination</arg>
<doc>Will clean out any existing flow matches in the given &lt;FlowLib.Flow object at 0x756aa4c0dbd0&gt; object</doc>
<status status="PASS" start="2026-10-20T23:19:43.144055" elapsed="0.004610"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-10-20T23:19:43.149006" level="INFO">${src} = 11.3.0.0/16</msg>
<var>${src}</var>
<arg>${match_value_dict}</arg>
<arg>source</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="PASS" start="2026-10-20T23:19:43.148856" elapsed="0.000174"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:43.157955" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4d62020&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:43.157590" elapsed="0.000390"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:43.158180" elapsed="0.000362"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:43.159061" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;ALL&lt;/output-node-connector&gt;&lt;/outpu...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:43.158737" elapsed="0.000352"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:43.159264" elapsed="0.000136"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:43.159904" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;ALL&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination&gt;&lt;address&gt;ff:ff:ff:ff:ff:ff&lt;/address&gt;&lt;/ethernet-destination&gt;&lt;/ethernet-match&gt;&lt;ipv4-source&gt;11.3.0.0/16&lt;/ipv4-source&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;88&lt;/id&gt;&lt;priority&gt;42&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:43.159640" elapsed="0.000347"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:43.160028" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>ipv4-source</arg>
<arg>${src}</arg>
<arg>match</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4c0dbd0&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:43.157128" elapsed="0.003001"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-10-20T23:19:43.160508" level="INFO">${dst} = 99.0.0.0/8</msg>
<var>${dst}</var>
<arg>${match_value_dict}</arg>
<arg>destination</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="PASS" start="2026-10-20T23:19:43.160343" elapsed="0.000190"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:43.169374" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4c1c450&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:43.168998" elapsed="0.000413"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:43.169615" elapsed="0.000334"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:43.170503" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;ALL&lt;/output-node-connector&gt;&lt;/outpu...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:43.170145" elapsed="0.000387"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:43.170709" elapsed="0.000120"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:43.171328" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;ALL&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination&gt;&lt;address&gt;ff:ff:ff:ff:ff:ff&lt;/address&gt;&lt;/ethernet-destination&gt;&lt;/ethernet-match&gt;&lt;ipv4-source&gt;11.3.0.0/16&lt;/ipv4-source&gt;&lt;ipv4-destination&gt;99.0.0.0/8&lt;/ipv4-destination&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;88&lt;/id&gt;&lt;priority&gt;42&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:43.171050" elapsed="0.000335"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:43.171434" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>ipv4-destination</arg>
<arg>${dst}</arg>
<arg>match</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4c0dbd0&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:43.168566" elapsed="0.002970"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:43.171584" elapsed="0.000024"/>
</return>
<arg>${flow}</arg>
<arg>${ipv4_match_dict}</arg>
<doc>Specific keyword for adding an ipv4 match rules where the elements are given
in key/value pairs inside the ${match_value_dict} argument. This keyword will also remove any
existing ipv4 match elements from the flow before adding</doc>
<status status="PASS" start="2026-10-20T23:19:43.139074" elapsed="0.032604"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:43.172168" level="INFO">Flow XML is &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;ALL&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination&gt;&lt;address&gt;ff:ff:ff:ff:ff:ff&lt;/address&gt;&lt;/ethernet-destination&gt;&lt;/ethernet-match&gt;&lt;ipv4-source&gt;11.3.0.0/16&lt;/ipv4-source&gt;&lt;ipv4-destination&gt;99.0.0.0/8&lt;/ipv4-destination&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;88&lt;/id&gt;&lt;priority&gt;42&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>Flow XML is ${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:43.171896" elapsed="0.000325"/>
</kw>
<kw name="Call Method" owner="BuiltIn">
<arg>${test_switch}</arg>
<arg>create_flow_match_elements</arg>
<arg>${flow.xml}</arg>
<doc>Calls the named method of the given object with the provided arguments.</doc>
<status status="PASS" start="2026-10-20T23:19:43.172434" elapsed="0.000371"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:43.173328" level="INFO">['dl_src=00:ab:cd:ef:01:23,dl_dst=ff:ff:ff:ff:ff:ff,nw_src=11.3.0.0/16,nw_dst=99.0.0.0/8 actions=ALL', 'table=200']</msg>
<arg>${test_switch.flow_validations}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:43.173039" elapsed="0.000333"/>
</kw>
<kw name="Get Switch Datapath ID" owner="SwitchUtils">
<kw name="Configure Connection Index And Prompt Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${switch.connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-10-20T23:19:43.174669" elapsed="0.000160"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:43.174392" elapsed="0.000470"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:43.174373" elapsed="0.000513"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Set Client Configuration" owner="SSHLibrary">
<arg>prompt=${switch.mgmt_prompt}</arg>
<arg>timeout=5s</arg>
<doc>Update the `configuration` of the current connection.</doc>
<status status="PASS" start="2026-10-20T23:19:43.175177" elapsed="0.000297"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:43.174936" elapsed="0.000604"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:43.174921" elapsed="0.000644"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Switch Connection" owner="Telnet">
<arg>${switch.connection_index}</arg>
<doc>Switches between active connections using an index or an alias.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:43.175863" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:43.175618" elapsed="0.000295"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:43.175603" elapsed="0.000332"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Set Prompt" owner="Telnet">
<arg>${switch.mgmt_prompt}</arg>
<arg>True</arg>
<doc>Sets the prompt used by the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:43.176216" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:43.175983" elapsed="0.000284"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:43.175969" elapsed="0.000319"/>
</if>
<arg>${switch}</arg>
<doc>when using multiple switch connections (e.g. more than one switch device) this keyword will switch the current connection index and prompt so that the following
Read or Write actions happen on the correct device.</doc>
<status status="PASS" start="2026-10-20T23:19:43.174159" elapsed="0.002188"/>
</kw>
<kw name="Read Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Read" owner="SSHLibrary">
<doc>Consumes and returns everything available on the server output.</doc>
<status status="PASS" start="2026-10-20T23:19:43.177021" elapsed="0.000119"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:43.176780" elapsed="0.000390"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:43.176764" elapsed="0.000428"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Read" owner="Telnet">
<doc>Reads everything that is currently available in the output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:43.177495" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:43.177241" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:43.177226" elapsed="0.000338"/>
</if>
<arg>${switch}</arg>
<doc>Wraps the Read command so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:43.176572" elapsed="0.001035"/>
</kw>
<kw name="Execute Command Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:19:43.178541" level="INFO">Executing command '/sbin/ifconfig s1 | grep -o -E "([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}"'.</msg>
<msg time="2026-10-20T23:19:43.192295" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:19:43.192394" level="INFO">${output} = e2:07:e3:56:6d:42</msg>
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:19:43.178434" elapsed="0.014000"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:43.178142" elapsed="0.014329"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${output}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:43.192681" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:43.192496" elapsed="0.000236"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:43.178125" elapsed="0.014626"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Execute Command" owner="Telnet">
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes the given `command` and reads, logs, and returns resulting output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:43.193042" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:43.192802" elapsed="0.000291"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:43.193591" level="INFO">${output} = e2:07:e3:56:6d:42</msg>
<var>${output}</var>
<arg>${output}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:43.193289" elapsed="0.000326"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:43.193115" elapsed="0.000532"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:43.192787" elapsed="0.000879"/>
</if>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-20T23:19:43.193698" elapsed="0.000025"/>
</return>
<msg time="2026-10-20T23:19:43.193836" level="INFO">${switch.datapath_id_output_string} = e2:07:e3:56:6d:42</msg>
<var>${switch.datapath_id_output_string}</var>
<arg>${switch}</arg>
<arg>${switch.datapath_id_output_command}</arg>
<doc>Wraps the Execute Command keyword so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:43.177860" elapsed="0.015999"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:43.194369" level="INFO">e2:07:e3:56:6d:42</msg>
<arg>${switch.datapath_id_output_string}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:43.194085" elapsed="0.000338"/>
</kw>
<kw name="Call Method" owner="BuiltIn">
<arg>${switch}</arg>
<arg>update_datapath_id</arg>
<doc>Calls the named method of the given object with the provided arguments.</doc>
<status status="PASS" start="2026-10-20T23:19:43.194603" elapsed="0.000245"/>
</kw>
<return>
<value>${switch.datapath_id}</value>
<status status="PASS" start="2026-10-20T23:19:43.194891" elapsed="0.000025"/>
</return>
<msg time="2026-10-20T23:19:43.195060" level="INFO">${dpid_id} = 248523506740546</msg>
<var>${dpid_id}</var>
<arg>${test_switch}</arg>
<doc>Using the connection index for the given switch, will execute the command string
"datapath_id_output_command" which will store the output in switch.datapath_id_output_string.
The switch object method "update_datapath_id" is called which is assumed to place the ODL
friendly (decimal) version of the datapath id in to switch.datapath_id and the value is also
returned from this keyword.</doc>
<status status="PASS" start="2026-10-20T23:19:43.173580" elapsed="0.021503"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Add Flow To Controller And Verify" owner="FlowLib">
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:19:43.200180" level="INFO">PUT Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=88 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=88 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Content-Length': '662', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;ALL&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination&gt;&lt;address&gt;ff:ff:ff:ff:ff:ff&lt;/address&gt;&lt;/ethernet-destination&gt;&lt;/ethernet-match&gt;&lt;ipv4-source&gt;11.3.0.0/16&lt;/ipv4-source&gt;&lt;ipv4-destination&gt;99.0.0.0/8&lt;/ipv4-destination&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;88&lt;/id&gt;&lt;priority&gt;42&lt;/priority&gt;&lt;/flow&gt; 
 </msg>
<msg time="2026-10-20T23:19:43.200267" level="INFO">PUT Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=88 
 status=404, reason=Not Found 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-10-20T23:19:43.200383" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=88</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=${node_id}/flow-node-inventory:table=${table_id}/flow=${flow_id}</arg>
<arg>headers=${HEADERS_XML}</arg>
<arg>data=${flow_body}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:19:43.196332" elapsed="0.004438">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=88</status>
</kw>
<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-10-20T23:19:43.201022" elapsed="0.000022"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=${node_id}/flow-node-inventory:table=${table_id}/flow=${flow_id}?content=config</arg>
<arg>headers=${ACCEPT_XML}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:43.201196" elapsed="0.000019"/>
</kw>
<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-10-20T23:19:43.201493" elapsed="0.000020"/>
</kw>
<kw name="Compare Xml" owner="Common">
<arg>${flow_body}</arg>
<arg>${resp.text}</arg>
<doc>compare the two XML files to see if they contain the same data
but could be if different order.
It just split the xml in to lines and just check the line is in
the other file</doc>
<status status="NOT RUN" start="2026-10-20T23:19:43.201682" elapsed="0.000019"/>
</kw>
<arg>${flow.xml}</arg>
<arg>openflow%3A${dpid_id}</arg>
<arg>${flow.table_id}</arg>
<arg>${flow.id}</arg>
<doc>Push flow through REST-API and verify in data-store</doc>
<status status="FAIL" start="2026-10-20T23:19:43.195812" elapsed="0.005982">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=88</status>
</kw>
<kw name="Add Flow To Controller And Verify" owner="FlowLib">
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:19:44.210631" level="INFO">PUT Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=88 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=88 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Content-Length': '662', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;ALL&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination&gt;&lt;address&gt;ff:ff:ff:ff:ff:ff&lt;/address&gt;&lt;/ethernet-destination&gt;&lt;/ethernet-match&gt;&lt;ipv4-source&gt;11.3.0.0/16&lt;/ipv4-source&gt;&lt;ipv4-destination&gt;99.0.0.0/8&lt;/ipv4-destination&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;88&lt;/id&gt;&lt;priority&gt;42&lt;/priority&gt;&lt;/flow&gt; 
 </msg>
<msg time="2026-10-20T23:19:44.210766" level="INFO">PUT Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=88 
 status=404, reason=Not Found 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-10-20T23:19:44.210980" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=88</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=${node_id}/flow-node-inventory:table=${table_id}/flow=${flow_id}</arg>
<arg>headers=${HEADERS_XML}</arg>
<arg>data=${flow_body}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:19:44.204038" elapsed="0.007737">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=88</status>
</kw>
<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-10-20T23:19:44.212411" elapsed="0.000067"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=${node_id}/flow-node-inventory:table=${table_id}/flow=${flow_id}?content=config</arg>
<arg>headers=${ACCEPT_XML}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:44.212819" elapsed="0.000042"/>
</kw>
<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-10-20T23:19:44.213381" elapsed="0.000043"/>
</kw>
<kw name="Compare Xml" owner="Common">
<arg>${flow_body}</arg>
<arg>${resp.text}</arg>
<doc>compare the two XML files to see if they contain the same data
but could be if different order.
It just split the xml in to lines and just check the line is in
the other file</doc>
<status status="NOT RUN" start="2026-10-20T23:19:44.213817" elapsed="0.000042"/>
</kw>
<arg>${flow.xml}</arg>
<arg>openflow%3A${dpid_id}</arg>
<arg>${flow.table_id}</arg>
<arg>${flow.id}</arg>
<doc>Push flow through REST-API and verify in data-store</doc>
<status status="FAIL" start="2026-10-20T23:19:44.202611" elapsed="0.011451">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=88</status>
</kw>
<kw name="Add Flow To Controller And Verify" owner="FlowLib">
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:19:45.221914" level="INFO">PUT Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=88 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=88 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Content-Length': '662', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;ALL&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination&gt;&lt;address&gt;ff:ff:ff:ff:ff:ff&lt;/address&gt;&lt;/ethernet-destination&gt;&lt;/ethernet-match&gt;&lt;ipv4-source&gt;11.3.0.0/16&lt;/ipv4-source&gt;&lt;ipv4-destination&gt;99.0.0.0/8&lt;/ipv4-destination&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;88&lt;/id&gt;&lt;priority&gt;42&lt;/priority&gt;&lt;/flow&gt; 
 </msg>
<msg time="2026-10-20T23:19:45.222116" level="INFO">PUT Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=88 
 status=404, reason=Not Found 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-10-20T23:19:45.222300" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=88</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=${node_id}/flow-node-inventory:table=${table_id}/flow=${flow_id}</arg>
<arg>headers=${HEADERS_XML}</arg>
<arg>data=${flow_body}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:19:45.216066" elapsed="0.007002">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=88</status>
</kw>
<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-10-20T23:19:45.223689" elapsed="0.000049"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=${node_id}/flow-node-inventory:table=${table_id}/flow=${flow_id}?content=config</arg>
<arg>headers=${ACCEPT_XML}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:45.224082" elapsed="0.000044"/>
</kw>
<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-10-20T23:19:45.224674" elapsed="0.000044"/>
</kw>
<kw name="Compare Xml" owner="Common">
<arg>${flow_body}</arg>
<arg>${resp.text}</arg>
<doc>compare the two XML files to see if they contain the same data
but could be if different order.
It just split the xml in to lines and just check the line is in
the other file</doc>
<status status="NOT RUN" start="2026-10-20T23:19:45.225090" elapsed="0.000042"/>
</kw>
<arg>${flow.xml}</arg>
<arg>openflow%3A${dpid_id}</arg>
<arg>${flow.table_id}</arg>
<arg>${flow.id}</arg>
<doc>Push flow through REST-API and verify in data-store</doc>
<status status="FAIL" start="2026-10-20T23:19:45.214772" elapsed="0.010581">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=88</status>
</kw>
<kw name="Add Flow To Controller And Verify" owner="FlowLib">
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:19:46.233540" level="INFO">PUT Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=88 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=88 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Content-Length': '662', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;ALL&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination&gt;&lt;address&gt;ff:ff:ff:ff:ff:ff&lt;/address&gt;&lt;/ethernet-destination&gt;&lt;/ethernet-match&gt;&lt;ipv4-source&gt;11.3.0.0/16&lt;/ipv4-source&gt;&lt;ipv4-destination&gt;99.0.0.0/8&lt;/ipv4-destination&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;88&lt;/id&gt;&lt;priority&gt;42&lt;/priority&gt;&lt;/flow&gt; 
 </msg>
<msg time="2026-10-20T23:19:46.233674" level="INFO">PUT Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=88 
 status=404, reason=Not Found 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-10-20T23:19:46.233860" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=88</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=${node_id}/flow-node-inventory:table=${table_id}/flow=${flow_id}</arg>
<arg>headers=${HEADERS_XML}</arg>
<arg>data=${flow_body}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:19:46.227453" elapsed="0.007174">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=88</status>
</kw>
<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-10-20T23:19:46.235274" elapsed="0.000085"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=${node_id}/flow-node-inventory:table=${table_id}/flow=${flow_id}?content=config</arg>
<arg>headers=${ACCEPT_XML}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:46.235729" elapsed="0.000045"/>
</kw>
<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-10-20T23:19:46.236279" elapsed="0.000073"/>
</kw>
<kw name="Compare Xml" owner="Common">
<arg>${flow_body}</arg>
<arg>${resp.text}</arg>
<doc>compare the two XML files to see if they contain the same data
but could be if different order.
It just split the xml in to lines and just check the line is in
the other file</doc>
<status status="NOT RUN" start="2026-10-20T23:19:46.236757" elapsed="0.000043"/>
</kw>
<arg>${flow.xml}</arg>
<arg>openflow%3A${dpid_id}</arg>
<arg>${flow.table_id}</arg>
<arg>${flow.id}</arg>
<doc>Push flow through REST-API and verify in data-store</doc>
<status status="FAIL" start="2026-10-20T23:19:46.226086" elapsed="0.010911">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=88</status>
</kw>
<msg time="2026-10-20T23:19:46.237206" level="FAIL">Keyword 'Add Flow To Controller And Verify' failed after retrying for 3 seconds. The last error was: HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=88</msg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Add Flow To Controller And Verify</arg>
<arg>${flow.xml}</arg>
<arg>openflow%3A${dpid_id}</arg>
<arg>${flow.table_id}</arg>
<arg>${flow.id}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-10-20T23:19:43.195301" elapsed="3.042135">Keyword 'Add Flow To Controller And Verify' failed after retrying for 3 seconds. The last error was: HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=88</status>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>3s</arg>
<arg>1s</arg>
<arg>Validate Switch Output</arg>
<arg>${test_switch}</arg>
<arg>${test_switch.dump_all_flows}</arg>
<arg>${test_switch.flow_validations}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:46.237991" elapsed="0.000045"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>3s</arg>
<arg>1s</arg>
<arg>Remove Flow From Controller And Verify</arg>
<arg>openflow%3A${dpid_id}</arg>
<arg>${flow.table_id}</arg>
<arg>${flow.id}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:46.238654" elapsed="0.000046"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>3s</arg>
<arg>1s</arg>
<arg>Validate Switch Output</arg>
<arg>${test_switch}</arg>
<arg>${test_switch.dump_all_flows}</arg>
<arg>${test_switch.flow_validations}</arg>
<arg>false</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:46.239189" elapsed="0.000047"/>
</kw>
<arg>${TEST_NAME}</arg>
<arg>200</arg>
<arg>88</arg>
<arg>42</arg>
<status status="FAIL" start="2026-10-20T23:19:42.881164" elapsed="3.358314">Keyword 'Add Flow To Controller And Verify' failed after retrying for 3 seconds. The last error was: HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=88</status>
</kw>
<doc>OF1.3: OFPP_ALL = 0xfffffffc, /* All physical ports except input port. */</doc>
<tag>all</tag>
<status status="FAIL" start="2026-10-20T23:19:42.880034" elapsed="3.359795">Keyword 'Add Flow To Controller And Verify' failed after retrying for 3 seconds. The last error was: HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=88</status>
</test>
<test id="s1-s4-s2-t6" name="CONTROLLER" line="71">
<kw name="Create And Remove Flow">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:19:46.243690" level="INFO">${ethernet_match_dict} = {'type': '0x800', 'destination': 'ff:ff:ff:ff:ff:ff', 'source': '00:ab:cd:ef:01:23'}</msg>
<var>${ethernet_match_dict}</var>
<arg>type=${eth_type}</arg>
<arg>destination=${eth_dst}</arg>
<arg>source=${eth_src}</arg>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:19:46.242664" elapsed="0.001086"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:19:46.245104" level="INFO">${ipv4_match_dict} = {'source': '11.3.0.0/16', 'destination': '99.0.0.0/8'}</msg>
<var>${ipv4_match_dict}</var>
<arg>source=${ipv4_src}</arg>
<arg>destination=${ipv4_dst}</arg>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:19:46.244232" elapsed="0.000927"/>
</kw>
<kw name="Create Inventory Flow" owner="FlowLib">
<kw name="Make Inventory Flow" owner="FlowLib">
<msg time="2026-10-20T23:19:46.246643" level="INFO">${flow} = &lt;FlowLib.Flow object at 0x756aa4c54790&gt;</msg>
<var>${flow}</var>
<doc>Robot Keyword to create and return an instance of the Flow
class.</doc>
<status status="PASS" start="2026-10-20T23:19:46.246363" elapsed="0.000336"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:46.246790" elapsed="0.000066"/>
</return>
<msg time="2026-10-20T23:19:46.247079" level="INFO">${flow} = &lt;FlowLib.Flow object at 0x756aa4c54790&gt;</msg>
<var>${flow}</var>
<doc>Calls FlowLib.Make_Inventory_Flow function and initializes and sanitizes
the basic flow elements that can be given to flow:inventory</doc>
<status status="PASS" start="2026-10-20T23:19:46.245679" elapsed="0.001453"/>
</kw>
<kw name="Set &quot;${flow}&quot; &quot;table_id&quot; With &quot;${table_id}&quot;" owner="FlowLib" source_name="Set &quot;${flow}&quot; &quot;${property}&quot; With &quot;${property_val}&quot;">
<if>
<branch type="IF" condition="&quot;table_id&quot; != &quot;${property}&quot; and &quot;cookie_mask&quot; != &quot;${property}&quot;">
<kw name="Replace String" owner="String">
<var>${property}</var>
<arg>${property}</arg>
<arg>_</arg>
<arg>-</arg>
<doc>Replaces `search_for` in the given `string` with `replace_with`.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:46.252483" elapsed="0.000067"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:46.251852" elapsed="0.000782"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:46.253784" level="INFO">${property} = table_id</msg>
<var>${property}</var>
<arg>${property}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:46.253082" elapsed="0.000781"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:46.252688" elapsed="0.001274"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:46.251810" elapsed="0.002216"/>
</if>
<kw name="Remove Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:46.259575" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4c1d170&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:46.258722" elapsed="0.000912"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Remove Elements" owner="XML">
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Removes all elements matching `xpath` from the `source` structure.</doc>
<status status="PASS" start="2026-10-20T23:19:46.260979" elapsed="0.000626"/>
</kw>
<arg>Remove Elements</arg>
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-20T23:19:46.260079" elapsed="0.001637"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:46.262830" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:46.262134" elapsed="0.000755"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:46.263281" elapsed="0.000328"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:46.263712" elapsed="0.000063"/>
</return>
<arg>${flow}</arg>
<arg>${property}</arg>
<doc>Removes the element at the given ${element_xpath} within the given &lt;FlowLib.Flow object at 0x756aa4c54790&gt;
object. The &lt;FlowLib.Flow object at 0x756aa4c54790&gt; object's xml representation will be updated to reflect this removal.</doc>
<status status="PASS" start="2026-10-20T23:19:46.257799" elapsed="0.006142"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:46.279620" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4c1cc20&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:46.279118" elapsed="0.000539"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:46.279939" elapsed="0.000501"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:46.281143" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:46.280728" elapsed="0.000452"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:46.281526" elapsed="0.000174"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:46.282428" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:46.282026" elapsed="0.000483"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:46.282567" elapsed="0.000039"/>
</return>
<arg>${flow}</arg>
<arg>${property}</arg>
<arg>${property_val}</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4c54790&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:46.278482" elapsed="0.004227"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>${property}</arg>
<arg>${property_val}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:46.282960" elapsed="0.000183"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:46.283205" elapsed="0.000035"/>
</return>
<doc>Embedded variables to make higher level keywords more readable.
There are some cases where the python attribute uses an underscore,
but a hyphen needs to be used. This seems inconsistent, and may need
to be looked at from the openflow plugin perspective.</doc>
<status status="PASS" start="2026-10-20T23:19:46.251218" elapsed="0.032144"/>
</kw>
<kw name="Set &quot;${flow}&quot; &quot;id&quot; With &quot;${flow_id}&quot;" owner="FlowLib" source_name="Set &quot;${flow}&quot; &quot;${property}&quot; With &quot;${property_val}&quot;">
<if>
<branch type="IF" condition="&quot;table_id&quot; != &quot;${property}&quot; and &quot;cookie_mask&quot; != &quot;${property}&quot;">
<kw name="Replace String" owner="String">
<msg time="2026-10-20T23:19:46.286589" level="INFO">${property} = id</msg>
<var>${property}</var>
<arg>${property}</arg>
<arg>_</arg>
<arg>-</arg>
<doc>Replaces `search_for` in the given `string` with `replace_with`.</doc>
<status status="PASS" start="2026-10-20T23:19:46.286281" elapsed="0.000342"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:46.285903" elapsed="0.000775"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${property}</var>
<arg>${property}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:46.286965" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:46.286711" elapsed="0.000323"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:46.285879" elapsed="0.001182"/>
</if>
<kw name="Remove Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:46.290242" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4c1e3e0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:46.289791" elapsed="0.000487"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Remove Elements" owner="XML">
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Removes all elements matching `xpath` from the `source` structure.</doc>
<status status="PASS" start="2026-10-20T23:19:46.291140" elapsed="0.000383"/>
</kw>
<arg>Remove Elements</arg>
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-20T23:19:46.290603" elapsed="0.000991"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:46.292241" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:46.291856" elapsed="0.000422"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:46.292563" elapsed="0.000170"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:46.292795" elapsed="0.000038"/>
</return>
<arg>${flow}</arg>
<arg>${property}</arg>
<doc>Removes the element at the given ${element_xpath} within the given &lt;FlowLib.Flow object at 0x756aa4c54790&gt;
object. The &lt;FlowLib.Flow object at 0x756aa4c54790&gt; object's xml representation will be updated to reflect this removal.</doc>
<status status="PASS" start="2026-10-20T23:19:46.289232" elapsed="0.003702"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:46.303464" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4c1e6b0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:46.303125" elapsed="0.000376"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:46.303702" elapsed="0.000338"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:46.304548" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;21&lt;/id&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:46.304235" elapsed="0.000340"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:46.304750" elapsed="0.000120"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:46.305376" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;21&lt;/id&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:46.305095" elapsed="0.000326"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:46.305460" elapsed="0.000042"/>
</return>
<arg>${flow}</arg>
<arg>${property}</arg>
<arg>${property_val}</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4c54790&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:46.302687" elapsed="0.002892"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>${property}</arg>
<arg>${property_val}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:46.305794" elapsed="0.000131"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:46.305970" elapsed="0.000025"/>
</return>
<doc>Embedded variables to make higher level keywords more readable.
There are some cases where the python attribute uses an underscore,
but a hyphen needs to be used. This seems inconsistent, and may need
to be looked at from the openflow plugin perspective.</doc>
<status status="PASS" start="2026-10-20T23:19:46.285553" elapsed="0.020513"/>
</kw>
<kw name="Set &quot;${flow}&quot; &quot;priority&quot; With &quot;${priority}&quot;" owner="FlowLib" source_name="Set &quot;${flow}&quot; &quot;${property}&quot; With &quot;${property_val}&quot;">
<if>
<branch type="IF" condition="&quot;table_id&quot; != &quot;${property}&quot; and &quot;cookie_mask&quot; != &quot;${property}&quot;">
<kw name="Replace String" owner="String">
<msg time="2026-10-20T23:19:46.308339" level="INFO">${property} = priority</msg>
<var>${property}</var>
<arg>${property}</arg>
<arg>_</arg>
<arg>-</arg>
<doc>Replaces `search_for` in the given `string` with `replace_with`.</doc>
<status status="PASS" start="2026-10-20T23:19:46.308146" elapsed="0.000218"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:46.307880" elapsed="0.000521"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${property}</var>
<arg>${property}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:46.308622" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:46.308424" elapsed="0.000249"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:46.307863" elapsed="0.000829"/>
</if>
<kw name="Remove Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:46.310841" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4c1e340&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:46.310517" elapsed="0.000350"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Remove Elements" owner="XML">
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Removes all elements matching `xpath` from the `source` structure.</doc>
<status status="PASS" start="2026-10-20T23:19:46.311459" elapsed="0.000272"/>
</kw>
<arg>Remove Elements</arg>
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-20T23:19:46.311066" elapsed="0.000716"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:46.312246" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;21&lt;/id&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:46.311970" elapsed="0.000303"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:46.312464" elapsed="0.000140"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:46.312649" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>${property}</arg>
<doc>Removes the element at the given ${element_xpath} within the given &lt;FlowLib.Flow object at 0x756aa4c54790&gt;
object. The &lt;FlowLib.Flow object at 0x756aa4c54790&gt; object's xml representation will be updated to reflect this removal.</doc>
<status status="PASS" start="2026-10-20T23:19:46.310116" elapsed="0.002631"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:46.321715" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4c1e660&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:46.321370" elapsed="0.000370"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:46.321942" elapsed="0.000333"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:46.322792" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;21&lt;/id&gt;&lt;priority&gt;21&lt;/priority&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:46.322505" elapsed="0.000314"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:46.322996" elapsed="0.000121"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:46.323636" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;21&lt;/id&gt;&lt;priority&gt;21&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:46.323357" elapsed="0.000323"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:46.323720" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>${property}</arg>
<arg>${property_val}</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4c54790&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:46.320918" elapsed="0.002902"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>${property}</arg>
<arg>${property_val}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:46.324000" elapsed="0.000130"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:46.324174" elapsed="0.000025"/>
</return>
<doc>Embedded variables to make higher level keywords more readable.
There are some cases where the python attribute uses an underscore,
but a hyphen needs to be used. This seems inconsistent, and may need
to be looked at from the openflow plugin perspective.</doc>
<status status="PASS" start="2026-10-20T23:19:46.307633" elapsed="0.016635"/>
</kw>
<kw name="Clear Flow Actions" owner="FlowLib">
<kw name="Remove Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:46.326782" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4c1c7c0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:46.326438" elapsed="0.000370"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Remove Elements" owner="XML">
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Removes all elements matching `xpath` from the `source` structure.</doc>
<status status="PASS" start="2026-10-20T23:19:46.327462" elapsed="0.000272"/>
</kw>
<arg>Remove Elements</arg>
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-20T23:19:46.327065" elapsed="0.000719"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:46.328250" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;21&lt;/id&gt;&lt;priority&gt;21&lt;/priority&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:46.327970" elapsed="0.000307"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:46.328469" elapsed="0.000132"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:46.328646" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>instructions/instruction</arg>
<doc>Removes the element at the given ${element_xpath} within the given &lt;FlowLib.Flow object at 0x756aa4c54790&gt;
object. The &lt;FlowLib.Flow object at 0x756aa4c54790&gt; object's xml representation will be updated to reflect this removal.</doc>
<status status="PASS" start="2026-10-20T23:19:46.326063" elapsed="0.002684"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:46.328789" elapsed="0.000023"/>
</return>
<arg>${flow}</arg>
<doc>Will clean out any existing flow actions in the given &lt;FlowLib.Flow object at 0x756aa4c54790&gt; object</doc>
<status status="PASS" start="2026-10-20T23:19:46.324470" elapsed="0.004410"/>
</kw>
<kw name="Set Flow Output Action" owner="FlowLib">
<kw name="Set Flow Action" owner="FlowLib">
<kw name="Remove Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:46.331983" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4c1ef70&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:46.331657" elapsed="0.000352"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Remove Elements" owner="XML">
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Removes all elements matching `xpath` from the `source` structure.</doc>
<status status="PASS" start="2026-10-20T23:19:46.332604" elapsed="0.000245"/>
</kw>
<arg>Remove Elements</arg>
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-20T23:19:46.332205" elapsed="0.000694"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:46.333386" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;21&lt;/id&gt;&lt;priority&gt;21&lt;/priority&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:46.333085" elapsed="0.000328"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:46.333599" elapsed="0.000120"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:46.333764" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>instruction</arg>
<doc>Removes the element at the given ${element_xpath} within the given &lt;FlowLib.Flow object at 0x756aa4c54790&gt;
object. The &lt;FlowLib.Flow object at 0x756aa4c54790&gt; object's xml representation will be updated to reflect this removal.</doc>
<status status="PASS" start="2026-10-20T23:19:46.331267" elapsed="0.002596"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:46.342761" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4c1c6d0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:46.342418" elapsed="0.000368"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:46.342986" elapsed="0.000345"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:46.343827" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction /&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;21&lt;/id&gt;&lt;priority&gt;21&lt;/priority&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:46.343544" elapsed="0.000311"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:46.344029" elapsed="0.000119"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:46.344662" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction /&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;21&lt;/id&gt;&lt;priority&gt;21&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:46.344385" elapsed="0.000321"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:46.344744" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>instruction</arg>
<arg>${EMPTY}</arg>
<arg>instructions</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4c54790&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:46.341954" elapsed="0.002889"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:46.353675" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4c1f1a0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:46.353332" elapsed="0.000368"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:46.353899" elapsed="0.000333"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:46.354739" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;21&lt;/id&gt;&lt;priority&gt;21&lt;/priority&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:46.354441" elapsed="0.000361"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:46.354980" elapsed="0.000122"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:46.355621" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;21&lt;/id&gt;&lt;priority&gt;21&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:46.355337" elapsed="0.000334"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:46.355711" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>order</arg>
<arg>${instruction_order}</arg>
<arg>instructions/instruction</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4c54790&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:46.352888" elapsed="0.002924"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:46.364667" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4c1f5b0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:46.364321" elapsed="0.000372"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:46.364894" elapsed="0.000337"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:46.365750" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions /&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;21&lt;/id&gt;&lt;priority&gt;21&lt;/priorit...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:46.365442" elapsed="0.000337"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:46.365955" elapsed="0.000126"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:46.366597" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions /&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;21&lt;/id&gt;&lt;priority&gt;21&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:46.366320" elapsed="0.000323"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:46.366682" elapsed="0.000028"/>
</return>
<arg>${flow}</arg>
<arg>apply-actions</arg>
<arg>${EMPTY}</arg>
<arg>instructions/instruction</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4c54790&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:46.363863" elapsed="0.002920"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:46.376465" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa57158a0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:46.376114" elapsed="0.000388"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:46.376703" elapsed="0.000339"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:46.377570" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action /&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;21&lt;/...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:46.377237" elapsed="0.000362"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:46.377774" elapsed="0.000121"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:46.378396" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action /&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;21&lt;/id&gt;&lt;priority&gt;21&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:46.378118" elapsed="0.000324"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:46.378480" elapsed="0.000038"/>
</return>
<arg>${flow}</arg>
<arg>action</arg>
<arg>${EMPTY}</arg>
<arg>instructions/instruction/apply-actions</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4c54790&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:46.375665" elapsed="0.002928"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:46.387468" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4c1c130&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:46.387116" elapsed="0.000390"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:46.387706" elapsed="0.000375"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:46.388603" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:46.388275" elapsed="0.000357"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:46.388808" elapsed="0.000120"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:46.389439" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;21&lt;/id&gt;&lt;priority&gt;21&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:46.389148" elapsed="0.000357"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:46.389556" elapsed="0.000033"/>
</return>
<arg>${flow}</arg>
<arg>order</arg>
<arg>${action_order}</arg>
<arg>instructions/instruction/apply-actions/action</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4c54790&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:46.386681" elapsed="0.002995"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:46.398518" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4c1d300&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:46.398156" elapsed="0.000388"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:46.398744" elapsed="0.000336"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:46.399598" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action /&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:46.399273" elapsed="0.000354"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:46.399801" elapsed="0.000119"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:46.400415" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action /&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;21&lt;/id&gt;&lt;priority&gt;21&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:46.400138" elapsed="0.000324"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:46.400513" elapsed="0.000028"/>
</return>
<arg>${flow}</arg>
<arg>${action}</arg>
<arg>${action_val}</arg>
<arg>instructions/instruction/apply-actions/action</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4c54790&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:46.397715" elapsed="0.002900"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:46.400663" elapsed="0.000024"/>
</return>
<arg>${flow}</arg>
<arg>${instruction_order}</arg>
<arg>${action_order}</arg>
<arg>output-action</arg>
<doc>Will remove the instruction element first, then add the proper xml structure
to implement the action as given in the arguments</doc>
<status status="PASS" start="2026-10-20T23:19:46.329446" elapsed="0.071309"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:46.409825" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa5715f80&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:46.409468" elapsed="0.000383"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:46.410052" elapsed="0.000378"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:46.410967" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;CONTROLLER&lt;/output-node-connector&gt;...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:46.410661" elapsed="0.000335"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:46.411172" elapsed="0.000120"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:46.411806" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;CONTROLLER&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;21&lt;/id&gt;&lt;priority&gt;21&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:46.411544" elapsed="0.000341"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:46.411925" elapsed="0.000028"/>
</return>
<arg>${flow}</arg>
<arg>output-node-connector</arg>
<arg>${output_port}</arg>
<arg>instructions/instruction/apply-actions/action/output-action</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4c54790&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:46.409019" elapsed="0.003009"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:46.412077" elapsed="0.000023"/>
</return>
<arg>${flow}</arg>
<arg>0</arg>
<arg>0</arg>
<arg>${output_port}</arg>
<status status="PASS" start="2026-10-20T23:19:46.329042" elapsed="0.083128"/>
</kw>
<kw name="Set Flow Ethernet Match" owner="FlowLib">
<kw name="Clear Flow Matches" owner="FlowLib">
<kw name="Remove Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:46.416332" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4c1f650&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:46.415969" elapsed="0.000390"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Remove Elements" owner="XML">
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Removes all elements matching `xpath` from the `source` structure.</doc>
<status status="PASS" start="2026-10-20T23:19:46.416938" elapsed="0.000251"/>
</kw>
<arg>Remove Elements</arg>
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-20T23:19:46.416567" elapsed="0.000671"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:46.417755" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;CONTROLLER&lt;/output-node-connector&gt;...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:46.417442" elapsed="0.000342"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:46.417958" elapsed="0.000119"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:46.418122" elapsed="0.000026"/>
</return>
<arg>${flow}</arg>
<arg>match/${match_element}</arg>
<doc>Removes the element at the given ${element_xpath} within the given &lt;FlowLib.Flow object at 0x756aa4c54790&gt;
object. The &lt;FlowLib.Flow object at 0x756aa4c54790&gt; object's xml representation will be updated to reflect this removal.</doc>
<status status="PASS" start="2026-10-20T23:19:46.415590" elapsed="0.002630"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:46.418262" elapsed="0.000023"/>
</return>
<arg>${flow}</arg>
<arg>match/ethernet-match</arg>
<doc>Will clean out any existing flow matches in the given &lt;FlowLib.Flow object at 0x756aa4c54790&gt; object</doc>
<status status="PASS" start="2026-10-20T23:19:46.413991" elapsed="0.004380"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:46.427212" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4c1ecf0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:46.426864" elapsed="0.000373"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:46.427454" elapsed="0.000345"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:46.428296" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;CONTROLLER&lt;/output-node-connector&gt;...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:46.427993" elapsed="0.000347"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:46.428527" elapsed="0.000120"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:46.429127" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;CONTROLLER&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match /&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;21&lt;/id&gt;&lt;priority&gt;21&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:46.428865" elapsed="0.000310"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:46.429214" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>ethernet-match</arg>
<arg>${EMPTY}</arg>
<arg>match</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4c54790&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:46.426408" elapsed="0.002922"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-10-20T23:19:46.429703" level="INFO">${type} = 0x800</msg>
<var>${type}</var>
<arg>${match_value_dict}</arg>
<arg>type</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="PASS" start="2026-10-20T23:19:46.429544" elapsed="0.000182"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:46.438700" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa57179c0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:46.438336" elapsed="0.000390"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:46.438926" elapsed="0.000340"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:46.439836" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;CONTROLLER&lt;/output-node-connector&gt;...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:46.439521" elapsed="0.000344"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:46.440042" elapsed="0.000121"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:46.440678" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;CONTROLLER&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type /&gt;&lt;/ethernet-match&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;21&lt;/id&gt;&lt;priority&gt;21&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:46.440401" elapsed="0.000325"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:46.440765" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>ethernet-type</arg>
<arg>${EMPTY}</arg>
<arg>match/ethernet-match</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4c54790&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:46.437875" elapsed="0.002992"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:46.449674" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4c1d990&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:46.449291" elapsed="0.000409"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:46.449901" elapsed="0.000340"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:46.450792" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;CONTROLLER&lt;/output-node-connector&gt;...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:46.450452" elapsed="0.000368"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:46.450995" elapsed="0.000120"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:46.451629" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;CONTROLLER&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;/ethernet-match&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;21&lt;/id&gt;&lt;priority&gt;21&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:46.451347" elapsed="0.000331"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:46.451717" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>type</arg>
<arg>${type}</arg>
<arg>match/ethernet-match/ethernet-type</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4c54790&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:46.448856" elapsed="0.002961"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-10-20T23:19:46.452162" level="INFO">${src} = 00:ab:cd:ef:01:23</msg>
<var>${src}</var>
<arg>${match_value_dict}</arg>
<arg>source</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="PASS" start="2026-10-20T23:19:46.452014" elapsed="0.000171"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:46.461018" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4c1ec50&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:46.460666" elapsed="0.000378"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:46.461244" elapsed="0.000367"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:46.462120" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;CONTROLLER&lt;/output-node-connector&gt;...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:46.461807" elapsed="0.000342"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:46.462341" elapsed="0.000131"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:46.463014" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;CONTROLLER&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source /&gt;&lt;/ethernet-match&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;21&lt;/id&gt;&lt;priority&gt;21&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:46.462729" elapsed="0.000378"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:46.463151" elapsed="0.000030"/>
</return>
<arg>${flow}</arg>
<arg>ethernet-source</arg>
<arg>${EMPTY}</arg>
<arg>match/ethernet-match</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4c54790&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:46.460194" elapsed="0.003066"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:46.472333" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa5716340&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:46.471957" elapsed="0.000403"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:46.472574" elapsed="0.000343"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:46.473448" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;CONTROLLER&lt;/output-node-connector&gt;...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:46.473112" elapsed="0.000364"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:46.473662" elapsed="0.000122"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:46.474268" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;CONTROLLER&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;/ethernet-match&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;21&lt;/id&gt;&lt;priority&gt;21&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:46.474004" elapsed="0.000331"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:46.474375" elapsed="0.000028"/>
</return>
<arg>${flow}</arg>
<arg>address</arg>
<arg>${src}</arg>
<arg>match/ethernet-match/ethernet-source</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4c54790&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:46.471513" elapsed="0.002965"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-10-20T23:19:46.474842" level="INFO">${dst} = ff:ff:ff:ff:ff:ff</msg>
<var>${dst}</var>
<arg>${match_value_dict}</arg>
<arg>destination</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="PASS" start="2026-10-20T23:19:46.474690" elapsed="0.000176"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:46.483742" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4c1f920&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:46.483375" elapsed="0.000392"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:46.483966" elapsed="0.000353"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:46.484846" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;CONTROLLER&lt;/output-node-connector&gt;...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:46.484526" elapsed="0.000348"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:46.485048" elapsed="0.000120"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:46.485678" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;CONTROLLER&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination /&gt;&lt;/ethernet-match&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;21&lt;/id&gt;&lt;priority&gt;21&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:46.485401" elapsed="0.000329"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:46.485769" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>ethernet-destination</arg>
<arg>${EMPTY}</arg>
<arg>match/ethernet-match</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4c54790&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:46.482911" elapsed="0.002958"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:46.494732" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4c1d350&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:46.494354" elapsed="0.000435"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:46.494995" elapsed="0.000359"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:46.495889" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;CONTROLLER&lt;/output-node-connector&gt;...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:46.495562" elapsed="0.000355"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:46.496092" elapsed="0.000120"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:46.496731" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;CONTROLLER&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination&gt;&lt;address&gt;ff:ff:ff:ff:ff:ff&lt;/address&gt;&lt;/ethernet-destination&gt;&lt;/ethernet-match&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;21&lt;/id&gt;&lt;priority&gt;21&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:46.496453" elapsed="0.000331"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:46.496823" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>address</arg>
<arg>${dst}</arg>
<arg>match/ethernet-match/ethernet-destination</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4c54790&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:46.493909" elapsed="0.003015"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:46.496972" elapsed="0.000023"/>
</return>
<arg>${flow}</arg>
<arg>${ethernet_match_dict}</arg>
<doc>Specific keyword for adding an ethernet match rules where the elements are given
in key/value pairs inside the ${match_value_dict} argument. This keyword will also remove any
existing ethernet-match elements from the flow before adding</doc>
<status status="PASS" start="2026-10-20T23:19:46.413634" elapsed="0.083432"/>
</kw>
<kw name="Set Flow IPv4 Match" owner="FlowLib">
<kw name="Clear Flow Matches" owner="FlowLib">
<kw name="Remove Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:46.501334" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4c1de40&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:46.500963" elapsed="0.000398"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Remove Elements" owner="XML">
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Removes all elements matching `xpath` from the `source` structure.</doc>
<status status="PASS" start="2026-10-20T23:19:46.501943" elapsed="0.000252"/>
</kw>
<arg>Remove Elements</arg>
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-20T23:19:46.501570" elapsed="0.000675"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:46.502786" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;CONTROLLER&lt;/output-node-connector&gt;...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:46.502446" elapsed="0.000368"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:46.502987" elapsed="0.000120"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:46.503151" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>match/${match_element}</arg>
<doc>Removes the element at the given ${element_xpath} within the given &lt;FlowLib.Flow object at 0x756aa4c54790&gt;
object. The &lt;FlowLib.Flow object at 0x756aa4c54790&gt; object's xml representation will be updated to reflect this removal.</doc>
<status status="PASS" start="2026-10-20T23:19:46.500587" elapsed="0.002663"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:46.503292" elapsed="0.000039"/>
</return>
<arg>${flow}</arg>
<arg>match/ipv4-source</arg>
<doc>Will clean out any existing flow matches in the given &lt;FlowLib.Flow object at 0x756aa4c54790&gt; object</doc>
<status status="PASS" start="2026-10-20T23:19:46.498987" elapsed="0.004417"/>
</kw>
<kw name="Clear Flow Matches" owner="FlowLib">
<kw name="Remove Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:46.505940" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4c1dad0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:46.505581" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Remove Elements" owner="XML">
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Removes all elements matching `xpath` from the `source` structure.</doc>
<status status="PASS" start="2026-10-20T23:19:46.506570" elapsed="0.000255"/>
</kw>
<arg>Remove Elements</arg>
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-20T23:19:46.506159" elapsed="0.000715"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:46.507393" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;CONTROLLER&lt;/output-node-connector&gt;...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:46.507058" elapsed="0.000363"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:46.507645" elapsed="0.000122"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:46.507812" elapsed="0.000028"/>
</return>
<arg>${flow}</arg>
<arg>match/${match_element}</arg>
<doc>Removes the element at the given ${element_xpath} within the given &lt;FlowLib.Flow object at 0x756aa4c54790&gt;
object. The &lt;FlowLib.Flow object at 0x756aa4c54790&gt; object's xml representation will be updated to reflect this removal.</doc>
<status status="PASS" start="2026-10-20T23:19:46.505177" elapsed="0.002735"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:46.507953" elapsed="0.000024"/>
</return>
<arg>${flow}</arg>
<arg>match/ipv4-destination</arg>
<doc>Will clean out any existing flow matches in the given &lt;FlowLib.Flow object at 0x756aa4c54790&gt; object</doc>
<status status="PASS" start="2026-10-20T23:19:46.503594" elapsed="0.004452"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-10-20T23:19:46.508421" level="INFO">${src} = 11.3.0.0/16</msg>
<var>${src}</var>
<arg>${match_value_dict}</arg>
<arg>source</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="PASS" start="2026-10-20T23:19:46.508246" elapsed="0.000199"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:46.517458" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa57148b0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:46.517078" elapsed="0.000407"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:46.517699" elapsed="0.000334"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:46.518583" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;CONTROLLER&lt;/output-node-connector&gt;...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:46.518228" elapsed="0.000384"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:46.518787" elapsed="0.000121"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:46.519405" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;CONTROLLER&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination&gt;&lt;address&gt;ff:ff:ff:ff:ff:ff&lt;/address&gt;&lt;/ethernet-destination&gt;&lt;/ethernet-match&gt;&lt;ipv4-source&gt;11.3.0.0/16&lt;/ipv4-source&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;21&lt;/id&gt;&lt;priority&gt;21&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:46.519127" elapsed="0.000331"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:46.519508" elapsed="0.000028"/>
</return>
<arg>${flow}</arg>
<arg>ipv4-source</arg>
<arg>${src}</arg>
<arg>match</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4c54790&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:46.516646" elapsed="0.002965"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-10-20T23:19:46.519957" level="INFO">${dst} = 99.0.0.0/8</msg>
<var>${dst}</var>
<arg>${match_value_dict}</arg>
<arg>destination</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="PASS" start="2026-10-20T23:19:46.519808" elapsed="0.000173"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:46.528956" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4c1d800&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:46.528598" elapsed="0.000383"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:46.529181" elapsed="0.000367"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:46.530071" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;CONTROLLER&lt;/output-node-connector&gt;...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:46.529744" elapsed="0.000355"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:46.530274" elapsed="0.000137"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:46.530915" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;CONTROLLER&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination&gt;&lt;address&gt;ff:ff:ff:ff:ff:ff&lt;/address&gt;&lt;/ethernet-destination&gt;&lt;/ethernet-match&gt;&lt;ipv4-source&gt;11.3.0.0/16&lt;/ipv4-source&gt;&lt;ipv4-destination&gt;99.0.0.0/8&lt;/ipv4-destination&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;21&lt;/id&gt;&lt;priority&gt;21&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:46.530650" elapsed="0.000318"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:46.531007" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>ipv4-destination</arg>
<arg>${dst}</arg>
<arg>match</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4c54790&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:46.528138" elapsed="0.003002"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:46.531190" elapsed="0.000025"/>
</return>
<arg>${flow}</arg>
<arg>${ipv4_match_dict}</arg>
<doc>Specific keyword for adding an ipv4 match rules where the elements are given
in key/value pairs inside the ${match_value_dict} argument. This keyword will also remove any
existing ipv4 match elements from the flow before adding</doc>
<status status="PASS" start="2026-10-20T23:19:46.498628" elapsed="0.032657"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:46.531817" level="INFO">Flow XML is &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;CONTROLLER&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination&gt;&lt;address&gt;ff:ff:ff:ff:ff:ff&lt;/address&gt;&lt;/ethernet-destination&gt;&lt;/ethernet-match&gt;&lt;ipv4-source&gt;11.3.0.0/16&lt;/ipv4-source&gt;&lt;ipv4-destination&gt;99.0.0.0/8&lt;/ipv4-destination&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;21&lt;/id&gt;&lt;priority&gt;21&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>Flow XML is ${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:46.531541" elapsed="0.000329"/>
</kw>
<kw name="Call Method" owner="BuiltIn">
<arg>${test_switch}</arg>
<arg>create_flow_match_elements</arg>
<arg>${flow.xml}</arg>
<doc>Calls the named method of the given object with the provided arguments.</doc>
<status status="PASS" start="2026-10-20T23:19:46.532052" elapsed="0.000377"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:46.532940" level="INFO">['dl_src=00:ab:cd:ef:01:23,dl_dst=ff:ff:ff:ff:ff:ff,nw_src=11.3.0.0/16,nw_dst=99.0.0.0/8 actions=CONTROLLER', 'table=200']</msg>
<arg>${test_switch.flow_validations}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:46.532668" elapsed="0.000314"/>
</kw>
<kw name="Get Switch Datapath ID" owner="SwitchUtils">
<kw name="Configure Connection Index And Prompt Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${switch.connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-10-20T23:19:46.534106" elapsed="0.000159"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:46.533841" elapsed="0.000458"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:46.533822" elapsed="0.000517"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Set Client Configuration" owner="SSHLibrary">
<arg>prompt=${switch.mgmt_prompt}</arg>
<arg>timeout=5s</arg>
<doc>Update the `configuration` of the current connection.</doc>
<status status="PASS" start="2026-10-20T23:19:46.534644" elapsed="0.000269"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:46.534390" elapsed="0.000559"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:46.534375" elapsed="0.000598"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Switch Connection" owner="Telnet">
<arg>${switch.connection_index}</arg>
<doc>Switches between active connections using an index or an alias.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:46.535264" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:46.535023" elapsed="0.000306"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:46.535008" elapsed="0.000344"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Set Prompt" owner="Telnet">
<arg>${switch.mgmt_prompt}</arg>
<arg>True</arg>
<doc>Sets the prompt used by the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:46.535656" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:46.535402" elapsed="0.000306"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:46.535387" elapsed="0.000343"/>
</if>
<arg>${switch}</arg>
<doc>when using multiple switch connections (e.g. more than one switch device) this keyword will switch the current connection index and prompt so that the following
Read or Write actions happen on the correct device.</doc>
<status status="PASS" start="2026-10-20T23:19:46.533631" elapsed="0.002141"/>
</kw>
<kw name="Read Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Read" owner="SSHLibrary">
<doc>Consumes and returns everything available on the server output.</doc>
<status status="PASS" start="2026-10-20T23:19:46.536444" elapsed="0.000132"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:46.536190" elapsed="0.000416"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:46.536174" elapsed="0.000455"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Read" owner="Telnet">
<doc>Reads everything that is currently available in the output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:46.536904" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:46.536678" elapsed="0.000273"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:46.536664" elapsed="0.000309"/>
</if>
<arg>${switch}</arg>
<doc>Wraps the Read command so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:46.535983" elapsed="0.001032"/>
</kw>
<kw name="Execute Command Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:19:46.538100" level="INFO">Executing command '/sbin/ifconfig s1 | grep -o -E "([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}"'.</msg>
<msg time="2026-10-20T23:19:46.551002" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:19:46.551085" level="INFO">${output} = e2:07:e3:56:6d:42</msg>
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:19:46.537994" elapsed="0.013114"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:46.537723" elapsed="0.013419"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${output}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:46.551371" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:46.551166" elapsed="0.000258"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:46.537706" elapsed="0.013739"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Execute Command" owner="Telnet">
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes the given `command` and reads, logs, and returns resulting output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:46.551758" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:46.551514" elapsed="0.000326"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:46.552303" level="INFO">${output} = e2:07:e3:56:6d:42</msg>
<var>${output}</var>
<arg>${output}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:46.552039" elapsed="0.000305"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:46.551863" elapsed="0.000514"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:46.551486" elapsed="0.000911"/>
</if>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-20T23:19:46.552429" elapsed="0.000026"/>
</return>
<msg time="2026-10-20T23:19:46.552581" level="INFO">${switch.datapath_id_output_string} = e2:07:e3:56:6d:42</msg>
<var>${switch.datapath_id_output_string}</var>
<arg>${switch}</arg>
<arg>${switch.datapath_id_output_command}</arg>
<doc>Wraps the Execute Command keyword so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:46.537271" elapsed="0.015334"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:46.553101" level="INFO">e2:07:e3:56:6d:42</msg>
<arg>${switch.datapath_id_output_string}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:46.552829" elapsed="0.000313"/>
</kw>
<kw name="Call Method" owner="BuiltIn">
<arg>${switch}</arg>
<arg>update_datapath_id</arg>
<doc>Calls the named method of the given object with the provided arguments.</doc>
<status status="PASS" start="2026-10-20T23:19:46.553338" elapsed="0.000271"/>
</kw>
<return>
<value>${switch.datapath_id}</value>
<status status="PASS" start="2026-10-20T23:19:46.553653" elapsed="0.000026"/>
</return>
<msg time="2026-10-20T23:19:46.553825" level="INFO">${dpid_id} = 248523506740546</msg>
<var>${dpid_id}</var>
<arg>${test_switch}</arg>
<doc>Using the connection index for the given switch, will execute the command string
"datapath_id_output_command" which will store the output in switch.datapath_id_output_string.
The switch object method "update_datapath_id" is called which is assumed to place the ODL
friendly (decimal) version of the datapath id in to switch.datapath_id and the value is also
returned from this keyword.</doc>
<status status="PASS" start="2026-10-20T23:19:46.533178" elapsed="0.020671"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Add Flow To Controller And Verify" owner="FlowLib">
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:19:46.559154" level="INFO">PUT Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=21 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=21 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Content-Length': '669', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;CONTROLLER&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination&gt;&lt;address&gt;ff:ff:ff:ff:ff:ff&lt;/address&gt;&lt;/ethernet-destination&gt;&lt;/ethernet-match&gt;&lt;ipv4-source&gt;11.3.0.0/16&lt;/ipv4-source&gt;&lt;ipv4-destination&gt;99.0.0.0/8&lt;/ipv4-destination&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;21&lt;/id&gt;&lt;priority&gt;21&lt;/priority&gt;&lt;/flow&gt; 
 </msg>
<msg time="2026-10-20T23:19:46.559213" level="INFO">PUT Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=21 
 status=404, reason=Not Found 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-10-20T23:19:46.559305" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=21</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=${node_id}/flow-node-inventory:table=${table_id}/flow=${flow_id}</arg>
<arg>headers=${HEADERS_XML}</arg>
<arg>data=${flow_body}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:19:46.555078" elapsed="0.004633">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=21</status>
</kw>
<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-10-20T23:19:46.559964" elapsed="0.000021"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=${node_id}/flow-node-inventory:table=${table_id}/flow=${flow_id}?content=config</arg>
<arg>headers=${ACCEPT_XML}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:46.560138" elapsed="0.000018"/>
</kw>
<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-10-20T23:19:46.560391" elapsed="0.000020"/>
</kw>
<kw name="Compare Xml" owner="Common">
<arg>${flow_body}</arg>
<arg>${resp.text}</arg>
<doc>compare the two XML files to see if they contain the same data
but could be if different order.
It just split the xml in to lines and just check the line is in
the other file</doc>
<status status="NOT RUN" start="2026-10-20T23:19:46.560589" elapsed="0.000018"/>
</kw>
<arg>${flow.xml}</arg>
<arg>openflow%3A${dpid_id}</arg>
<arg>${flow.table_id}</arg>
<arg>${flow.id}</arg>
<doc>Push flow through REST-API and verify in data-store</doc>
<status status="FAIL" start="2026-10-20T23:19:46.554575" elapsed="0.006125">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=21</status>
</kw>
<kw name="Add Flow To Controller And Verify" owner="FlowLib">
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:19:47.568917" level="INFO">PUT Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=21 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=21 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Content-Length': '669', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;CONTROLLER&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination&gt;&lt;address&gt;ff:ff:ff:ff:ff:ff&lt;/address&gt;&lt;/ethernet-destination&gt;&lt;/ethernet-match&gt;&lt;ipv4-source&gt;11.3.0.0/16&lt;/ipv4-source&gt;&lt;ipv4-destination&gt;99.0.0.0/8&lt;/ipv4-destination&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;21&lt;/id&gt;&lt;priority&gt;21&lt;/priority&gt;&lt;/flow&gt; 
 </msg>
<msg time="2026-10-20T23:19:47.569151" level="INFO">PUT Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=21 
 status=404, reason=Not Found 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-10-20T23:19:47.569385" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=21</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=${node_id}/flow-node-inventory:table=${table_id}/flow=${flow_id}</arg>
<arg>headers=${HEADERS_XML}</arg>
<arg>data=${flow_body}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:19:47.562925" elapsed="0.007233">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=21</status>
</kw>
<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-10-20T23:19:47.570824" elapsed="0.000051"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=${node_id}/flow-node-inventory:table=${table_id}/flow=${flow_id}?content=config</arg>
<arg>headers=${ACCEPT_XML}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:47.571217" elapsed="0.000043"/>
</kw>
<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-10-20T23:19:47.571813" elapsed="0.000043"/>
</kw>
<kw name="Compare Xml" owner="Common">
<arg>${flow_body}</arg>
<arg>${resp.text}</arg>
<doc>compare the two XML files to see if they contain the same data
but could be if different order.
It just split the xml in to lines and just check the line is in
the other file</doc>
<status status="NOT RUN" start="2026-10-20T23:19:47.572226" elapsed="0.000041"/>
</kw>
<arg>${flow.xml}</arg>
<arg>openflow%3A${dpid_id}</arg>
<arg>${flow.table_id}</arg>
<arg>${flow.id}</arg>
<doc>Push flow through REST-API and verify in data-store</doc>
<status status="FAIL" start="2026-10-20T23:19:47.561485" elapsed="0.011010">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=21</status>
</kw>
<kw name="Add Flow To Controller And Verify" owner="FlowLib">
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:19:48.581071" level="INFO">PUT Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=21 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=21 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Content-Length': '669', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;CONTROLLER&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination&gt;&lt;address&gt;ff:ff:ff:ff:ff:ff&lt;/address&gt;&lt;/ethernet-destination&gt;&lt;/ethernet-match&gt;&lt;ipv4-source&gt;11.3.0.0/16&lt;/ipv4-source&gt;&lt;ipv4-destination&gt;99.0.0.0/8&lt;/ipv4-destination&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;21&lt;/id&gt;&lt;priority&gt;21&lt;/priority&gt;&lt;/flow&gt; 
 </msg>
<msg time="2026-10-20T23:19:48.581206" level="INFO">PUT Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=21 
 status=404, reason=Not Found 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-10-20T23:19:48.581442" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=21</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=${node_id}/flow-node-inventory:table=${table_id}/flow=${flow_id}</arg>
<arg>headers=${HEADERS_XML}</arg>
<arg>data=${flow_body}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:19:48.574925" elapsed="0.007271">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=21</status>
</kw>
<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-10-20T23:19:48.582872" elapsed="0.000049"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=${node_id}/flow-node-inventory:table=${table_id}/flow=${flow_id}?content=config</arg>
<arg>headers=${ACCEPT_XML}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:48.583263" elapsed="0.000077"/>
</kw>
<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-10-20T23:19:48.583857" elapsed="0.000044"/>
</kw>
<kw name="Compare Xml" owner="Common">
<arg>${flow_body}</arg>
<arg>${resp.text}</arg>
<doc>compare the two XML files to see if they contain the same data
but could be if different order.
It just split the xml in to lines and just check the line is in
the other file</doc>
<status status="NOT RUN" start="2026-10-20T23:19:48.584839" elapsed="0.000048"/>
</kw>
<arg>${flow.xml}</arg>
<arg>openflow%3A${dpid_id}</arg>
<arg>${flow.table_id}</arg>
<arg>${flow.id}</arg>
<doc>Push flow through REST-API and verify in data-store</doc>
<status status="FAIL" start="2026-10-20T23:19:48.573409" elapsed="0.011685">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=21</status>
</kw>
<kw name="Add Flow To Controller And Verify" owner="FlowLib">
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:19:49.592805" level="INFO">PUT Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=21 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=21 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Content-Length': '669', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;CONTROLLER&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination&gt;&lt;address&gt;ff:ff:ff:ff:ff:ff&lt;/address&gt;&lt;/ethernet-destination&gt;&lt;/ethernet-match&gt;&lt;ipv4-source&gt;11.3.0.0/16&lt;/ipv4-source&gt;&lt;ipv4-destination&gt;99.0.0.0/8&lt;/ipv4-destination&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;21&lt;/id&gt;&lt;priority&gt;21&lt;/priority&gt;&lt;/flow&gt; 
 </msg>
<msg time="2026-10-20T23:19:49.593003" level="INFO">PUT Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=21 
 status=404, reason=Not Found 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-10-20T23:19:49.593188" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=21</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=${node_id}/flow-node-inventory:table=${table_id}/flow=${flow_id}</arg>
<arg>headers=${HEADERS_XML}</arg>
<arg>data=${flow_body}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:19:49.587092" elapsed="0.006864">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=21</status>
</kw>
<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-10-20T23:19:49.594557" elapsed="0.000070"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=${node_id}/flow-node-inventory:table=${table_id}/flow=${flow_id}?content=config</arg>
<arg>headers=${ACCEPT_XML}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:49.594967" elapsed="0.000043"/>
</kw>
<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-10-20T23:19:49.595526" elapsed="0.000042"/>
</kw>
<kw name="Compare Xml" owner="Common">
<arg>${flow_body}</arg>
<arg>${resp.text}</arg>
<doc>compare the two XML files to see if they contain the same data
but could be if different order.
It just split the xml in to lines and just check the line is in
the other file</doc>
<status status="NOT RUN" start="2026-10-20T23:19:49.595956" elapsed="0.000041"/>
</kw>
<arg>${flow.xml}</arg>
<arg>openflow%3A${dpid_id}</arg>
<arg>${flow.table_id}</arg>
<arg>${flow.id}</arg>
<doc>Push flow through REST-API and verify in data-store</doc>
<status status="FAIL" start="2026-10-20T23:19:49.585815" elapsed="0.010371">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=21</status>
</kw>
<msg time="2026-10-20T23:19:49.596413" level="FAIL">Keyword 'Add Flow To Controller And Verify' failed after retrying for 3 seconds. The last error was: HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=21</msg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Add Flow To Controller And Verify</arg>
<arg>${flow.xml}</arg>
<arg>openflow%3A${dpid_id}</arg>
<arg>${flow.table_id}</arg>
<arg>${flow.id}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-10-20T23:19:46.554066" elapsed="3.042793">Keyword 'Add Flow To Controller And Verify' failed after retrying for 3 seconds. The last error was: HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=21</status>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>3s</arg>
<arg>1s</arg>
<arg>Validate Switch Output</arg>
<arg>${test_switch}</arg>
<arg>${test_switch.dump_all_flows}</arg>
<arg>${test_switch.flow_validations}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:49.597416" elapsed="0.000045"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>3s</arg>
<arg>1s</arg>
<arg>Remove Flow From Controller And Verify</arg>
<arg>openflow%3A${dpid_id}</arg>
<arg>${flow.table_id}</arg>
<arg>${flow.id}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:49.597960" elapsed="0.000041"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>3s</arg>
<arg>1s</arg>
<arg>Validate Switch Output</arg>
<arg>${test_switch}</arg>
<arg>${test_switch.dump_all_flows}</arg>
<arg>${test_switch.flow_validations}</arg>
<arg>false</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:49.598503" elapsed="0.000041"/>
</kw>
<arg>${TEST_NAME}</arg>
<arg>200</arg>
<arg>21</arg>
<arg>21</arg>
<status status="FAIL" start="2026-10-20T23:19:46.241685" elapsed="3.357082">Keyword 'Add Flow To Controller And Verify' failed after retrying for 3 seconds. The last error was: HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=21</status>
</kw>
<doc>OF1.3 OFPP_CONTROLLER = 0xfffffffd, /* Send to controller. */</doc>
<tag>controller</tag>
<status status="FAIL" start="2026-10-20T23:19:46.240581" elapsed="3.358509">Keyword 'Add Flow To Controller And Verify' failed after retrying for 3 seconds. The last error was: HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=21</status>
</test>
<test id="s1-s4-s2-t7" name="LOCAL" line="74">
<kw name="Create And Remove Flow">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:19:49.602829" level="INFO">${ethernet_match_dict} = {'type': '0x800', 'destination': 'ff:ff:ff:ff:ff:ff', 'source': '00:ab:cd:ef:01:23'}</msg>
<var>${ethernet_match_dict}</var>
<arg>type=${eth_type}</arg>
<arg>destination=${eth_dst}</arg>
<arg>source=${eth_src}</arg>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:19:49.601830" elapsed="0.001057"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:19:49.604232" level="INFO">${ipv4_match_dict} = {'source': '11.3.0.0/16', 'destination': '99.0.0.0/8'}</msg>
<var>${ipv4_match_dict}</var>
<arg>source=${ipv4_src}</arg>
<arg>destination=${ipv4_dst}</arg>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:19:49.603399" elapsed="0.000888"/>
</kw>
<kw name="Create Inventory Flow" owner="FlowLib">
<kw name="Make Inventory Flow" owner="FlowLib">
<msg time="2026-10-20T23:19:49.605735" level="INFO">${flow} = &lt;FlowLib.Flow object at 0x756aa4c9d710&gt;</msg>
<var>${flow}</var>
<doc>Robot Keyword to create and return an instance of the Flow
class.</doc>
<status status="PASS" start="2026-10-20T23:19:49.605421" elapsed="0.000372"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:49.605883" elapsed="0.000067"/>
</return>
<msg time="2026-10-20T23:19:49.606174" level="INFO">${flow} = &lt;FlowLib.Flow object at 0x756aa4c9d710&gt;</msg>
<var>${flow}</var>
<doc>Calls FlowLib.Make_Inventory_Flow function and initializes and sanitizes
the basic flow elements that can be given to flow:inventory</doc>
<status status="PASS" start="2026-10-20T23:19:49.604728" elapsed="0.001510"/>
</kw>
<kw name="Set &quot;${flow}&quot; &quot;table_id&quot; With &quot;${table_id}&quot;" owner="FlowLib" source_name="Set &quot;${flow}&quot; &quot;${property}&quot; With &quot;${property_val}&quot;">
<if>
<branch type="IF" condition="&quot;table_id&quot; != &quot;${property}&quot; and &quot;cookie_mask&quot; != &quot;${property}&quot;">
<kw name="Replace String" owner="String">
<var>${property}</var>
<arg>${property}</arg>
<arg>_</arg>
<arg>-</arg>
<doc>Replaces `search_for` in the given `string` with `replace_with`.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:49.611122" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:49.610502" elapsed="0.000847"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:49.612512" level="INFO">${property} = table_id</msg>
<var>${property}</var>
<arg>${property}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:49.611879" elapsed="0.000688"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:49.611413" elapsed="0.001250"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:49.610460" elapsed="0.002251"/>
</if>
<kw name="Remove Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:49.618017" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4c1cc20&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:49.617198" elapsed="0.000876"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Remove Elements" owner="XML">
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Removes all elements matching `xpath` from the `source` structure.</doc>
<status status="PASS" start="2026-10-20T23:19:49.619440" elapsed="0.000587"/>
</kw>
<arg>Remove Elements</arg>
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-20T23:19:49.618548" elapsed="0.001592"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:49.621231" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:49.620603" elapsed="0.000687"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:49.621738" elapsed="0.000273"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:49.622111" elapsed="0.000060"/>
</return>
<arg>${flow}</arg>
<arg>${property}</arg>
<doc>Removes the element at the given ${element_xpath} within the given &lt;FlowLib.Flow object at 0x756aa4c9d710&gt;
object. The &lt;FlowLib.Flow object at 0x756aa4c9d710&gt; object's xml representation will be updated to reflect this removal.</doc>
<status status="PASS" start="2026-10-20T23:19:49.616297" elapsed="0.006071"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:49.639200" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4c1f010&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:49.638740" elapsed="0.000496"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:49.639540" elapsed="0.000490"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:49.640730" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:49.640302" elapsed="0.000466"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:49.641016" elapsed="0.000169"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:49.641914" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:49.641521" elapsed="0.000453"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:49.642028" elapsed="0.000038"/>
</return>
<arg>${flow}</arg>
<arg>${property}</arg>
<arg>${property_val}</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4c9d710&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:49.638091" elapsed="0.004078"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>${property}</arg>
<arg>${property_val}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:49.642446" elapsed="0.000201"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:49.642709" elapsed="0.000035"/>
</return>
<doc>Embedded variables to make higher level keywords more readable.
There are some cases where the python attribute uses an underscore,
but a hyphen needs to be used. This seems inconsistent, and may need
to be looked at from the openflow plugin perspective.</doc>
<status status="PASS" start="2026-10-20T23:19:49.609889" elapsed="0.032963"/>
</kw>
<kw name="Set &quot;${flow}&quot; &quot;id&quot; With &quot;${flow_id}&quot;" owner="FlowLib" source_name="Set &quot;${flow}&quot; &quot;${property}&quot; With &quot;${property_val}&quot;">
<if>
<branch type="IF" condition="&quot;table_id&quot; != &quot;${property}&quot; and &quot;cookie_mask&quot; != &quot;${property}&quot;">
<kw name="Replace String" owner="String">
<msg time="2026-10-20T23:19:49.646060" level="INFO">${property} = id</msg>
<var>${property}</var>
<arg>${property}</arg>
<arg>_</arg>
<arg>-</arg>
<doc>Replaces `search_for` in the given `string` with `replace_with`.</doc>
<status status="PASS" start="2026-10-20T23:19:49.645797" elapsed="0.000297"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:49.645402" elapsed="0.000744"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${property}</var>
<arg>${property}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:49.646450" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:49.646179" elapsed="0.000342"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:49.645379" elapsed="0.001169"/>
</if>
<kw name="Remove Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:49.649613" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4c1e250&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:49.649100" elapsed="0.000550"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Remove Elements" owner="XML">
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Removes all elements matching `xpath` from the `source` structure.</doc>
<status status="PASS" start="2026-10-20T23:19:49.650456" elapsed="0.000357"/>
</kw>
<arg>Remove Elements</arg>
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-20T23:19:49.649922" elapsed="0.000962"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:49.651614" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:49.651188" elapsed="0.000465"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:49.651899" elapsed="0.000177"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:49.652139" elapsed="0.000038"/>
</return>
<arg>${flow}</arg>
<arg>${property}</arg>
<doc>Removes the element at the given ${element_xpath} within the given &lt;FlowLib.Flow object at 0x756aa4c9d710&gt;
object. The &lt;FlowLib.Flow object at 0x756aa4c9d710&gt; object's xml representation will be updated to reflect this removal.</doc>
<status status="PASS" start="2026-10-20T23:19:49.648556" elapsed="0.003723"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:49.663360" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4c1e660&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:49.663020" elapsed="0.000366"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:49.663597" elapsed="0.000333"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:49.664418" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;32&lt;/id&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:49.664125" elapsed="0.000320"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:49.664632" elapsed="0.000120"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:49.665232" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;32&lt;/id&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:49.664971" elapsed="0.000304"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:49.665328" elapsed="0.000028"/>
</return>
<arg>${flow}</arg>
<arg>${property}</arg>
<arg>${property_val}</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4c9d710&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:49.662567" elapsed="0.002864"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>${property}</arg>
<arg>${property_val}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:49.665623" elapsed="0.000132"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:49.665799" elapsed="0.000024"/>
</return>
<doc>Embedded variables to make higher level keywords more readable.
There are some cases where the python attribute uses an underscore,
but a hyphen needs to be used. This seems inconsistent, and may need
to be looked at from the openflow plugin perspective.</doc>
<status status="PASS" start="2026-10-20T23:19:49.645037" elapsed="0.020856"/>
</kw>
<kw name="Set &quot;${flow}&quot; &quot;priority&quot; With &quot;${priority}&quot;" owner="FlowLib" source_name="Set &quot;${flow}&quot; &quot;${property}&quot; With &quot;${property_val}&quot;">
<if>
<branch type="IF" condition="&quot;table_id&quot; != &quot;${property}&quot; and &quot;cookie_mask&quot; != &quot;${property}&quot;">
<kw name="Replace String" owner="String">
<msg time="2026-10-20T23:19:49.668139" level="INFO">${property} = priority</msg>
<var>${property}</var>
<arg>${property}</arg>
<arg>_</arg>
<arg>-</arg>
<doc>Replaces `search_for` in the given `string` with `replace_with`.</doc>
<status status="PASS" start="2026-10-20T23:19:49.667963" elapsed="0.000200"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:49.667702" elapsed="0.000498"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${property}</var>
<arg>${property}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:49.668418" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:49.668223" elapsed="0.000246"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:49.667685" elapsed="0.000804"/>
</if>
<kw name="Remove Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:49.670656" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4c1d8a0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:49.670318" elapsed="0.000363"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Remove Elements" owner="XML">
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Removes all elements matching `xpath` from the `source` structure.</doc>
<status status="PASS" start="2026-10-20T23:19:49.671244" elapsed="0.000263"/>
</kw>
<arg>Remove Elements</arg>
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-20T23:19:49.670875" elapsed="0.000681"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:49.672030" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;32&lt;/id&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:49.671755" elapsed="0.000302"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:49.672230" elapsed="0.000134"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:49.672419" elapsed="0.000026"/>
</return>
<arg>${flow}</arg>
<arg>${property}</arg>
<doc>Removes the element at the given ${element_xpath} within the given &lt;FlowLib.Flow object at 0x756aa4c9d710&gt;
object. The &lt;FlowLib.Flow object at 0x756aa4c9d710&gt; object's xml representation will be updated to reflect this removal.</doc>
<status status="PASS" start="2026-10-20T23:19:49.669930" elapsed="0.002587"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:49.681398" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4c1de90&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:49.681056" elapsed="0.000368"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:49.681635" elapsed="0.000334"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:49.682461" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;32&lt;/id&gt;&lt;priority&gt;12345&lt;/priority&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:49.682163" elapsed="0.000325"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:49.682684" elapsed="0.000122"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:49.683295" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;32&lt;/id&gt;&lt;priority&gt;12345&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:49.683031" elapsed="0.000324"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:49.683394" elapsed="0.000028"/>
</return>
<arg>${flow}</arg>
<arg>${property}</arg>
<arg>${property_val}</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4c9d710&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:49.680578" elapsed="0.002918"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>${property}</arg>
<arg>${property_val}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:49.683688" elapsed="0.000137"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:49.683869" elapsed="0.000025"/>
</return>
<doc>Embedded variables to make higher level keywords more readable.
There are some cases where the python attribute uses an underscore,
but a hyphen needs to be used. This seems inconsistent, and may need
to be looked at from the openflow plugin perspective.</doc>
<status status="PASS" start="2026-10-20T23:19:49.667443" elapsed="0.016521"/>
</kw>
<kw name="Clear Flow Actions" owner="FlowLib">
<kw name="Remove Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:49.686576" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4c1ce00&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:49.686235" elapsed="0.000869"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Remove Elements" owner="XML">
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Removes all elements matching `xpath` from the `source` structure.</doc>
<status status="PASS" start="2026-10-20T23:19:49.687703" elapsed="0.000255"/>
</kw>
<arg>Remove Elements</arg>
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-20T23:19:49.687316" elapsed="0.000691"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:49.688490" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;32&lt;/id&gt;&lt;priority&gt;12345&lt;/priority&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:49.688193" elapsed="0.000324"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:49.688705" elapsed="0.000120"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:49.688870" elapsed="0.000026"/>
</return>
<arg>${flow}</arg>
<arg>instructions/instruction</arg>
<doc>Removes the element at the given ${element_xpath} within the given &lt;FlowLib.Flow object at 0x756aa4c9d710&gt;
object. The &lt;FlowLib.Flow object at 0x756aa4c9d710&gt; object's xml representation will be updated to reflect this removal.</doc>
<status status="PASS" start="2026-10-20T23:19:49.685871" elapsed="0.003097"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:49.689010" elapsed="0.000023"/>
</return>
<arg>${flow}</arg>
<doc>Will clean out any existing flow actions in the given &lt;FlowLib.Flow object at 0x756aa4c9d710&gt; object</doc>
<status status="PASS" start="2026-10-20T23:19:49.684140" elapsed="0.004961"/>
</kw>
<kw name="Set Flow Output Action" owner="FlowLib">
<kw name="Set Flow Action" owner="FlowLib">
<kw name="Remove Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:49.692090" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4c1dbc0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:49.691759" elapsed="0.000357"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Remove Elements" owner="XML">
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Removes all elements matching `xpath` from the `source` structure.</doc>
<status status="PASS" start="2026-10-20T23:19:49.692710" elapsed="0.000246"/>
</kw>
<arg>Remove Elements</arg>
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-20T23:19:49.692325" elapsed="0.000680"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:49.693485" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions /&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;32&lt;/id&gt;&lt;priority&gt;12345&lt;/priority&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:49.693190" elapsed="0.000322"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:49.693696" elapsed="0.000119"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:49.693860" elapsed="0.000026"/>
</return>
<arg>${flow}</arg>
<arg>instruction</arg>
<doc>Removes the element at the given ${element_xpath} within the given &lt;FlowLib.Flow object at 0x756aa4c9d710&gt;
object. The &lt;FlowLib.Flow object at 0x756aa4c9d710&gt; object's xml representation will be updated to reflect this removal.</doc>
<status status="PASS" start="2026-10-20T23:19:49.691387" elapsed="0.002571"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:49.702846" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4c1e660&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:49.702506" elapsed="0.000365"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:49.703069" elapsed="0.000348"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:49.703909" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction /&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;32&lt;/id&gt;&lt;priority&gt;12345&lt;/priority&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:49.703624" elapsed="0.000312"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:49.704111" elapsed="0.000126"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:49.704760" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction /&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;32&lt;/id&gt;&lt;priority&gt;12345&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:49.704477" elapsed="0.000327"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:49.704843" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>instruction</arg>
<arg>${EMPTY}</arg>
<arg>instructions</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4c9d710&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:49.702049" elapsed="0.002895"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:49.713971" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4c1d3a0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:49.713637" elapsed="0.000359"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:49.714196" elapsed="0.000353"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:49.715045" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;32&lt;/id&gt;&lt;priority&gt;12345&lt;/priority&gt;&lt;/flow&gt;</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:49.714757" elapsed="0.000316"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:49.715249" elapsed="0.000136"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:49.715878" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;32&lt;/id&gt;&lt;priority&gt;12345&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:49.715615" elapsed="0.000308"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:49.715961" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>order</arg>
<arg>${instruction_order}</arg>
<arg>instructions/instruction</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4c9d710&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:49.713178" elapsed="0.002883"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:49.724976" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4c1f1a0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:49.724635" elapsed="0.000366"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:49.725200" elapsed="0.000362"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:49.726071" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions /&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;32&lt;/id&gt;&lt;priority&gt;12345&lt;/prio...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:49.725778" elapsed="0.000321"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:49.726273" elapsed="0.000136"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:49.726928" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions /&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;32&lt;/id&gt;&lt;priority&gt;12345&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:49.726657" elapsed="0.000316"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:49.727012" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>apply-actions</arg>
<arg>${EMPTY}</arg>
<arg>instructions/instruction</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4c9d710&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:49.724163" elapsed="0.002950"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:49.736048" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4c1ff10&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:49.735712" elapsed="0.000362"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:49.736272" elapsed="0.000376"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:49.737134" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action /&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;32&lt;/...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:49.736841" elapsed="0.000321"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:49.737353" elapsed="0.000121"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:49.737973" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action /&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;32&lt;/id&gt;&lt;priority&gt;12345&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:49.737709" elapsed="0.000310"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:49.738057" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>action</arg>
<arg>${EMPTY}</arg>
<arg>instructions/instruction/apply-actions</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4c9d710&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:49.735234" elapsed="0.002924"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:49.747812" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4c1d3f0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:49.747461" elapsed="0.000377"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:49.748038" elapsed="0.000356"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:49.748901" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:49.748603" elapsed="0.000326"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:49.749103" elapsed="0.000127"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:49.750013" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;32&lt;/id&gt;&lt;priority&gt;12345&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:49.749466" elapsed="0.000595"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:49.750100" elapsed="0.000028"/>
</return>
<arg>${flow}</arg>
<arg>order</arg>
<arg>${action_order}</arg>
<arg>instructions/instruction/apply-actions/action</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4c9d710&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:49.747008" elapsed="0.003194"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:49.759135" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4c1e3e0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:49.758799" elapsed="0.000362"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:49.759378" elapsed="0.000361"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:49.760237" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action /&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:49.759936" elapsed="0.000330"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:49.760465" elapsed="0.000135"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:49.761132" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action /&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;32&lt;/id&gt;&lt;priority&gt;12345&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:49.760864" elapsed="0.000315"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:49.761217" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>${action}</arg>
<arg>${action_val}</arg>
<arg>instructions/instruction/apply-actions/action</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4c9d710&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:49.758340" elapsed="0.002994"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:49.761386" elapsed="0.000032"/>
</return>
<arg>${flow}</arg>
<arg>${instruction_order}</arg>
<arg>${action_order}</arg>
<arg>output-action</arg>
<doc>Will remove the instruction element first, then add the proper xml structure
to implement the action as given in the arguments</doc>
<status status="PASS" start="2026-10-20T23:19:49.689682" elapsed="0.071805"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:49.770430" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4c1c540&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:49.770065" elapsed="0.000391"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:49.770675" elapsed="0.000349"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:49.771537" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;LOCAL&lt;/output-node-connector&gt;&lt;/out...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:49.771219" elapsed="0.000346"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:49.771759" elapsed="0.000120"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:49.772377" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;LOCAL&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match /&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;32&lt;/id&gt;&lt;priority&gt;12345&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:49.772099" elapsed="0.000326"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:49.772464" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>output-node-connector</arg>
<arg>${output_port}</arg>
<arg>instructions/instruction/apply-actions/action/output-action</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4c9d710&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:49.769631" elapsed="0.002934"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:49.772630" elapsed="0.000024"/>
</return>
<arg>${flow}</arg>
<arg>0</arg>
<arg>0</arg>
<arg>${output_port}</arg>
<status status="PASS" start="2026-10-20T23:19:49.689261" elapsed="0.083463"/>
</kw>
<kw name="Set Flow Ethernet Match" owner="FlowLib">
<kw name="Clear Flow Matches" owner="FlowLib">
<kw name="Remove Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:49.777036" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4c1d7b0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:49.776688" elapsed="0.000374"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Remove Elements" owner="XML">
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Removes all elements matching `xpath` from the `source` structure.</doc>
<status status="PASS" start="2026-10-20T23:19:49.777663" elapsed="0.000254"/>
</kw>
<arg>Remove Elements</arg>
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-20T23:19:49.777258" elapsed="0.000710"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:49.778472" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;LOCAL&lt;/output-node-connector&gt;&lt;/out...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:49.778155" elapsed="0.000346"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:49.778689" elapsed="0.000121"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:49.778854" elapsed="0.000026"/>
</return>
<arg>${flow}</arg>
<arg>match/${match_element}</arg>
<doc>Removes the element at the given ${element_xpath} within the given &lt;FlowLib.Flow object at 0x756aa4c9d710&gt;
object. The &lt;FlowLib.Flow object at 0x756aa4c9d710&gt; object's xml representation will be updated to reflect this removal.</doc>
<status status="PASS" start="2026-10-20T23:19:49.776280" elapsed="0.002672"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:49.778995" elapsed="0.000023"/>
</return>
<arg>${flow}</arg>
<arg>match/ethernet-match</arg>
<doc>Will clean out any existing flow matches in the given &lt;FlowLib.Flow object at 0x756aa4c9d710&gt; object</doc>
<status status="PASS" start="2026-10-20T23:19:49.774698" elapsed="0.004389"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:49.787991" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4c1db20&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:49.787638" elapsed="0.000379"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:49.788216" elapsed="0.000351"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:49.789080" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;LOCAL&lt;/output-node-connector&gt;&lt;/out...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:49.788775" elapsed="0.000334"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:49.789284" elapsed="0.000140"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:49.789925" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;LOCAL&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match /&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;32&lt;/id&gt;&lt;priority&gt;12345&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:49.789660" elapsed="0.000313"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:49.790012" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>ethernet-match</arg>
<arg>${EMPTY}</arg>
<arg>match</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4c9d710&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:49.787166" elapsed="0.002946"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-10-20T23:19:49.790493" level="INFO">${type} = 0x800</msg>
<var>${type}</var>
<arg>${match_value_dict}</arg>
<arg>type</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="PASS" start="2026-10-20T23:19:49.790326" elapsed="0.000191"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:49.799386" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4c1f1a0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:49.799028" elapsed="0.000383"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:49.799627" elapsed="0.000339"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:49.800485" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;LOCAL&lt;/output-node-connector&gt;&lt;/out...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:49.800161" elapsed="0.000353"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:49.800704" elapsed="0.000122"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:49.801337" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;LOCAL&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type /&gt;&lt;/ethernet-match&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;32&lt;/id&gt;&lt;priority&gt;12345&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:49.801057" elapsed="0.000330"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:49.801426" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>ethernet-type</arg>
<arg>${EMPTY}</arg>
<arg>match/ethernet-match</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4c9d710&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:49.798572" elapsed="0.002955"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:49.810518" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4c1f060&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:49.810156" elapsed="0.000388"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:49.810760" elapsed="0.000339"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:49.811635" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;LOCAL&lt;/output-node-connector&gt;&lt;/out...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:49.811293" elapsed="0.000371"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:49.811843" elapsed="0.000119"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:49.812495" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;LOCAL&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;/ethernet-match&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;32&lt;/id&gt;&lt;priority&gt;12345&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:49.812212" elapsed="0.000331"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:49.812582" elapsed="0.000040"/>
</return>
<arg>${flow}</arg>
<arg>type</arg>
<arg>${type}</arg>
<arg>match/ethernet-match/ethernet-type</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4c9d710&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:49.809720" elapsed="0.002977"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-10-20T23:19:49.813043" level="INFO">${src} = 00:ab:cd:ef:01:23</msg>
<var>${src}</var>
<arg>${match_value_dict}</arg>
<arg>source</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="PASS" start="2026-10-20T23:19:49.812896" elapsed="0.000171"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:49.821980" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4d60720&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:49.821622" elapsed="0.000383"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:49.822204" elapsed="0.000355"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:49.823082" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;LOCAL&lt;/output-node-connector&gt;&lt;/out...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:49.822769" elapsed="0.000341"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:49.823284" elapsed="0.000147"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:49.823925" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;LOCAL&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source /&gt;&lt;/ethernet-match&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;32&lt;/id&gt;&lt;priority&gt;12345&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:49.823664" elapsed="0.000313"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:49.824015" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>ethernet-source</arg>
<arg>${EMPTY}</arg>
<arg>match/ethernet-match</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4c9d710&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:49.821151" elapsed="0.002964"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:49.833044" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4c1d210&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:49.832693" elapsed="0.000377"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:49.833276" elapsed="0.000368"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:49.834161" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;LOCAL&lt;/output-node-connector&gt;&lt;/out...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:49.833845" elapsed="0.000344"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:49.834379" elapsed="0.000121"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:49.835003" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;LOCAL&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;/ethernet-match&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;32&lt;/id&gt;&lt;priority&gt;12345&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:49.834738" elapsed="0.000316"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:49.835093" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>address</arg>
<arg>${src}</arg>
<arg>match/ethernet-match/ethernet-source</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4c9d710&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:49.832229" elapsed="0.002965"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-10-20T23:19:49.835619" level="INFO">${dst} = ff:ff:ff:ff:ff:ff</msg>
<var>${dst}</var>
<arg>${match_value_dict}</arg>
<arg>destination</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="PASS" start="2026-10-20T23:19:49.835444" elapsed="0.000200"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:49.844734" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4c1d710&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:49.844359" elapsed="0.000401"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:49.844961" elapsed="0.000339"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:49.845847" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;LOCAL&lt;/output-node-connector&gt;&lt;/out...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:49.845512" elapsed="0.000363"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:49.846049" elapsed="0.000120"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:49.846679" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;LOCAL&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination /&gt;&lt;/ethernet-match&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;32&lt;/id&gt;&lt;priority&gt;12345&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:49.846402" elapsed="0.000329"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:49.846773" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>ethernet-destination</arg>
<arg>${EMPTY}</arg>
<arg>match/ethernet-match</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4c9d710&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:49.843897" elapsed="0.002977"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:49.855773" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4c1fc40&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:49.855384" elapsed="0.000416"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:49.855999" elapsed="0.000355"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:49.856887" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;LOCAL&lt;/output-node-connector&gt;&lt;/out...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:49.856549" elapsed="0.000366"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:49.857088" elapsed="0.000118"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:49.857722" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;LOCAL&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination&gt;&lt;address&gt;ff:ff:ff:ff:ff:ff&lt;/address&gt;&lt;/ethernet-destination&gt;&lt;/ethernet-match&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;32&lt;/id&gt;&lt;priority&gt;12345&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:49.857443" elapsed="0.000331"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:49.857813" elapsed="0.000026"/>
</return>
<arg>${flow}</arg>
<arg>address</arg>
<arg>${dst}</arg>
<arg>match/ethernet-match/ethernet-destination</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4c9d710&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:49.854938" elapsed="0.002975"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:49.857961" elapsed="0.000023"/>
</return>
<arg>${flow}</arg>
<arg>${ethernet_match_dict}</arg>
<doc>Specific keyword for adding an ethernet match rules where the elements are given
in key/value pairs inside the ${match_value_dict} argument. This keyword will also remove any
existing ethernet-match elements from the flow before adding</doc>
<status status="PASS" start="2026-10-20T23:19:49.774300" elapsed="0.083753"/>
</kw>
<kw name="Set Flow IPv4 Match" owner="FlowLib">
<kw name="Clear Flow Matches" owner="FlowLib">
<kw name="Remove Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:49.862249" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4c1dee0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:49.861894" elapsed="0.000381"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Remove Elements" owner="XML">
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Removes all elements matching `xpath` from the `source` structure.</doc>
<status status="PASS" start="2026-10-20T23:19:49.862918" elapsed="0.000254"/>
</kw>
<arg>Remove Elements</arg>
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-20T23:19:49.862527" elapsed="0.000695"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:49.863763" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;LOCAL&lt;/output-node-connector&gt;&lt;/out...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:49.863426" elapsed="0.000366"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:49.863967" elapsed="0.000120"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:49.864131" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>match/${match_element}</arg>
<doc>Removes the element at the given ${element_xpath} within the given &lt;FlowLib.Flow object at 0x756aa4c9d710&gt;
object. The &lt;FlowLib.Flow object at 0x756aa4c9d710&gt; object's xml representation will be updated to reflect this removal.</doc>
<status status="PASS" start="2026-10-20T23:19:49.861485" elapsed="0.002746"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:49.864272" elapsed="0.000023"/>
</return>
<arg>${flow}</arg>
<arg>match/ipv4-source</arg>
<doc>Will clean out any existing flow matches in the given &lt;FlowLib.Flow object at 0x756aa4c9d710&gt; object</doc>
<status status="PASS" start="2026-10-20T23:19:49.859890" elapsed="0.004492"/>
</kw>
<kw name="Clear Flow Matches" owner="FlowLib">
<kw name="Remove Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:49.867137" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4c1d0d0&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:49.866768" elapsed="0.000401"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Remove Elements" owner="XML">
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Removes all elements matching `xpath` from the `source` structure.</doc>
<status status="PASS" start="2026-10-20T23:19:49.867776" elapsed="0.000255"/>
</kw>
<arg>Remove Elements</arg>
<arg>${flow_xml}</arg>
<arg>xpath=${element_xpath}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-20T23:19:49.867383" elapsed="0.000698"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:49.868631" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;LOCAL&lt;/output-node-connector&gt;&lt;/out...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:49.868267" elapsed="0.000393"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:49.868836" elapsed="0.000119"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:49.868999" elapsed="0.000026"/>
</return>
<arg>${flow}</arg>
<arg>match/${match_element}</arg>
<doc>Removes the element at the given ${element_xpath} within the given &lt;FlowLib.Flow object at 0x756aa4c9d710&gt;
object. The &lt;FlowLib.Flow object at 0x756aa4c9d710&gt; object's xml representation will be updated to reflect this removal.</doc>
<status status="PASS" start="2026-10-20T23:19:49.866360" elapsed="0.002737"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:49.869139" elapsed="0.000023"/>
</return>
<arg>${flow}</arg>
<arg>match/ipv4-destination</arg>
<doc>Will clean out any existing flow matches in the given &lt;FlowLib.Flow object at 0x756aa4c9d710&gt; object</doc>
<status status="PASS" start="2026-10-20T23:19:49.864570" elapsed="0.004661"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-10-20T23:19:49.869604" level="INFO">${src} = 11.3.0.0/16</msg>
<var>${src}</var>
<arg>${match_value_dict}</arg>
<arg>source</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="PASS" start="2026-10-20T23:19:49.869435" elapsed="0.000193"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:49.878605" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4c1e840&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:49.878210" elapsed="0.000422"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:49.878833" elapsed="0.000330"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:49.879715" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;LOCAL&lt;/output-node-connector&gt;&lt;/out...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:49.879374" elapsed="0.000369"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:49.879919" elapsed="0.000119"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:49.880546" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;LOCAL&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination&gt;&lt;address&gt;ff:ff:ff:ff:ff:ff&lt;/address&gt;&lt;/ethernet-destination&gt;&lt;/ethernet-match&gt;&lt;ipv4-source&gt;11.3.0.0/16&lt;/ipv4-source&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;32&lt;/id&gt;&lt;priority&gt;12345&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:49.880264" elapsed="0.000348"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:49.880684" elapsed="0.000029"/>
</return>
<arg>${flow}</arg>
<arg>ipv4-source</arg>
<arg>${src}</arg>
<arg>match</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4c9d710&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:49.877781" elapsed="0.003013"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-10-20T23:19:49.881146" level="INFO">${dst} = 99.0.0.0/8</msg>
<var>${dst}</var>
<arg>${match_value_dict}</arg>
<arg>destination</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="PASS" start="2026-10-20T23:19:49.880995" elapsed="0.000174"/>
</kw>
<kw name="Add Flow XML Element" owner="FlowLib">
<kw name="Parse Xml" owner="XML">
<msg time="2026-10-20T23:19:49.890081" level="INFO">${flow_xml} = &lt;Element 'flow' at 0x756aa4c1d260&gt;</msg>
<var>${flow_xml}</var>
<arg>${flow.xml}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-10-20T23:19:49.889713" elapsed="0.000393"/>
</kw>
<kw name="Add Element" owner="XML">
<arg>${flow_xml}</arg>
<arg>&lt;${element}&gt;${element_val}&lt;/${element}&gt;</arg>
<arg>xpath=${xpath}</arg>
<doc>Adds a child element to the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:49.890320" elapsed="0.000353"/>
</kw>
<kw name="Element To String" owner="XML">
<msg time="2026-10-20T23:19:49.891203" level="INFO">${xml_string} = &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;LOCAL&lt;/output-node-connector&gt;&lt;/out...</msg>
<var>${xml_string}</var>
<arg>${flow_xml}</arg>
<doc>Returns the string representation of the specified element.</doc>
<status status="PASS" start="2026-10-20T23:19:49.890873" elapsed="0.000358"/>
</kw>
<kw name="Set Flow Field" owner="FlowLib">
<arg>${flow}</arg>
<arg>xml</arg>
<arg>${xml_string}</arg>
<doc>Robot Keyword to allow the modification (setting) of the
flow object attributes</doc>
<status status="PASS" start="2026-10-20T23:19:49.891422" elapsed="0.000121"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:49.892053" level="INFO">&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;LOCAL&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination&gt;&lt;address&gt;ff:ff:ff:ff:ff:ff&lt;/address&gt;&lt;/ethernet-destination&gt;&lt;/ethernet-match&gt;&lt;ipv4-source&gt;11.3.0.0/16&lt;/ipv4-source&gt;&lt;ipv4-destination&gt;99.0.0.0/8&lt;/ipv4-destination&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;32&lt;/id&gt;&lt;priority&gt;12345&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:49.891786" elapsed="0.000319"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:49.892144" elapsed="0.000027"/>
</return>
<arg>${flow}</arg>
<arg>ipv4-destination</arg>
<arg>${dst}</arg>
<arg>match</arg>
<doc>Will modify the current xml representation of the &lt;FlowLib.Flow object at 0x756aa4c9d710&gt; object to contain
the given ${element} at the given ${xpath}. If the ${element} uses a value, that can be
passed eith the ${element_val} which defaults to  if not used. NOTE: since there
are two default parameters to this keyword, if you have an ${xpath} to use, but no ${element_val}
you will still need to pass  when invoking so that ${xpath} will end up at the right
location in the parameter list</doc>
<status status="PASS" start="2026-10-20T23:19:49.889246" elapsed="0.003000"/>
</kw>
<return>
<value>${flow}</value>
<status status="PASS" start="2026-10-20T23:19:49.892294" elapsed="0.000039"/>
</return>
<arg>${flow}</arg>
<arg>${ipv4_match_dict}</arg>
<doc>Specific keyword for adding an ipv4 match rules where the elements are given
in key/value pairs inside the ${match_value_dict} argument. This keyword will also remove any
existing ipv4 match elements from the flow before adding</doc>
<status status="PASS" start="2026-10-20T23:19:49.859512" elapsed="0.032893"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:49.892913" level="INFO">Flow XML is &lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;LOCAL&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination&gt;&lt;address&gt;ff:ff:ff:ff:ff:ff&lt;/address&gt;&lt;/ethernet-destination&gt;&lt;/ethernet-match&gt;&lt;ipv4-source&gt;11.3.0.0/16&lt;/ipv4-source&gt;&lt;ipv4-destination&gt;99.0.0.0/8&lt;/ipv4-destination&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;32&lt;/id&gt;&lt;priority&gt;12345&lt;/priority&gt;&lt;/flow&gt;</msg>
<arg>Flow XML is ${flow.xml}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:49.892639" elapsed="0.000326"/>
</kw>
<kw name="Call Method" owner="BuiltIn">
<arg>${test_switch}</arg>
<arg>create_flow_match_elements</arg>
<arg>${flow.xml}</arg>
<doc>Calls the named method of the given object with the provided arguments.</doc>
<status status="PASS" start="2026-10-20T23:19:49.893145" elapsed="0.000373"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:49.894036" level="INFO">['dl_src=00:ab:cd:ef:01:23,dl_dst=ff:ff:ff:ff:ff:ff,nw_src=11.3.0.0/16,nw_dst=99.0.0.0/8 actions=LOCAL', 'table=200']</msg>
<arg>${test_switch.flow_validations}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:49.893759" elapsed="0.000318"/>
</kw>
<kw name="Get Switch Datapath ID" owner="SwitchUtils">
<kw name="Configure Connection Index And Prompt Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${switch.connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-10-20T23:19:49.895353" elapsed="0.000159"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:49.895086" elapsed="0.000460"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:49.895068" elapsed="0.000501"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Set Client Configuration" owner="SSHLibrary">
<arg>prompt=${switch.mgmt_prompt}</arg>
<arg>timeout=5s</arg>
<doc>Update the `configuration` of the current connection.</doc>
<status status="PASS" start="2026-10-20T23:19:49.895883" elapsed="0.000265"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:49.895639" elapsed="0.000544"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:49.895624" elapsed="0.000582"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Switch Connection" owner="Telnet">
<arg>${switch.connection_index}</arg>
<doc>Switches between active connections using an index or an alias.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:49.896574" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:49.896303" elapsed="0.000337"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:49.896286" elapsed="0.000377"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Set Prompt" owner="Telnet">
<arg>${switch.mgmt_prompt}</arg>
<arg>True</arg>
<doc>Sets the prompt used by the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:49.896952" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:49.896712" elapsed="0.000291"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:49.896698" elapsed="0.000327"/>
</if>
<arg>${switch}</arg>
<doc>when using multiple switch connections (e.g. more than one switch device) this keyword will switch the current connection index and prompt so that the following
Read or Write actions happen on the correct device.</doc>
<status status="PASS" start="2026-10-20T23:19:49.894874" elapsed="0.002195"/>
</kw>
<kw name="Read Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Read" owner="SSHLibrary">
<doc>Consumes and returns everything available on the server output.</doc>
<status status="PASS" start="2026-10-20T23:19:49.897764" elapsed="0.000117"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:49.897513" elapsed="0.000399"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:49.897496" elapsed="0.000438"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Read" owner="Telnet">
<doc>Reads everything that is currently available in the output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:49.898208" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:49.897983" elapsed="0.000271"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:49.897969" elapsed="0.000307"/>
</if>
<arg>${switch}</arg>
<doc>Wraps the Read command so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:49.897283" elapsed="0.001050"/>
</kw>
<kw name="Execute Command Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:19:49.899251" level="INFO">Executing command '/sbin/ifconfig s1 | grep -o -E "([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}"'.</msg>
<msg time="2026-10-20T23:19:49.912875" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:19:49.912959" level="INFO">${output} = e2:07:e3:56:6d:42</msg>
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:19:49.899146" elapsed="0.013836"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:49.898881" elapsed="0.014135"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${output}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:49.913229" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:49.913040" elapsed="0.000240"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:49.898865" elapsed="0.014435"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Execute Command" owner="Telnet">
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes the given `command` and reads, logs, and returns resulting output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:49.913630" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:49.913370" elapsed="0.000313"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:49.914149" level="INFO">${output} = e2:07:e3:56:6d:42</msg>
<var>${output}</var>
<arg>${output}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:49.913886" elapsed="0.000287"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:49.913706" elapsed="0.000499"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:49.913355" elapsed="0.000870"/>
</if>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-20T23:19:49.914257" elapsed="0.000025"/>
</return>
<msg time="2026-10-20T23:19:49.914411" level="INFO">${switch.datapath_id_output_string} = e2:07:e3:56:6d:42</msg>
<var>${switch.datapath_id_output_string}</var>
<arg>${switch}</arg>
<arg>${switch.datapath_id_output_command}</arg>
<doc>Wraps the Execute Command keyword so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:49.898585" elapsed="0.015850"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:49.914953" level="INFO">e2:07:e3:56:6d:42</msg>
<arg>${switch.datapath_id_output_string}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:49.914674" elapsed="0.000320"/>
</kw>
<kw name="Call Method" owner="BuiltIn">
<arg>${switch}</arg>
<arg>update_datapath_id</arg>
<doc>Calls the named method of the given object with the provided arguments.</doc>
<status status="PASS" start="2026-10-20T23:19:49.915179" elapsed="0.000262"/>
</kw>
<return>
<value>${switch.datapath_id}</value>
<status status="PASS" start="2026-10-20T23:19:49.915486" elapsed="0.000025"/>
</return>
<msg time="2026-10-20T23:19:49.915669" level="INFO">${dpid_id} = 248523506740546</msg>
<var>${dpid_id}</var>
<arg>${test_switch}</arg>
<doc>Using the connection index for the given switch, will execute the command string
"datapath_id_output_command" which will store the output in switch.datapath_id_output_string.
The switch object method "update_datapath_id" is called which is assumed to place the ODL
friendly (decimal) version of the datapath id in to switch.datapath_id and the value is also
returned from this keyword.</doc>
<status status="PASS" start="2026-10-20T23:19:49.894269" elapsed="0.021423"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Add Flow To Controller And Verify" owner="FlowLib">
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:19:49.920640" level="INFO">PUT Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=32 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=32 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Content-Length': '667', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;LOCAL&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination&gt;&lt;address&gt;ff:ff:ff:ff:ff:ff&lt;/address&gt;&lt;/ethernet-destination&gt;&lt;/ethernet-match&gt;&lt;ipv4-source&gt;11.3.0.0/16&lt;/ipv4-source&gt;&lt;ipv4-destination&gt;99.0.0.0/8&lt;/ipv4-destination&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;32&lt;/id&gt;&lt;priority&gt;12345&lt;/priority&gt;&lt;/flow&gt; 
 </msg>
<msg time="2026-10-20T23:19:49.920728" level="INFO">PUT Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=32 
 status=404, reason=Not Found 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-10-20T23:19:49.920821" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=32</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=${node_id}/flow-node-inventory:table=${table_id}/flow=${flow_id}</arg>
<arg>headers=${HEADERS_XML}</arg>
<arg>data=${flow_body}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:19:49.916913" elapsed="0.004265">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=32</status>
</kw>
<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-10-20T23:19:49.921454" elapsed="0.000022"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=${node_id}/flow-node-inventory:table=${table_id}/flow=${flow_id}?content=config</arg>
<arg>headers=${ACCEPT_XML}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:49.921639" elapsed="0.000020"/>
</kw>
<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-10-20T23:19:49.921880" elapsed="0.000018"/>
</kw>
<kw name="Compare Xml" owner="Common">
<arg>${flow_body}</arg>
<arg>${resp.text}</arg>
<doc>compare the two XML files to see if they contain the same data
but could be if different order.
It just split the xml in to lines and just check the line is in
the other file</doc>
<status status="NOT RUN" start="2026-10-20T23:19:49.922063" elapsed="0.000018"/>
</kw>
<arg>${flow.xml}</arg>
<arg>openflow%3A${dpid_id}</arg>
<arg>${flow.table_id}</arg>
<arg>${flow.id}</arg>
<doc>Push flow through REST-API and verify in data-store</doc>
<status status="FAIL" start="2026-10-20T23:19:49.916399" elapsed="0.005772">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=32</status>
</kw>
<kw name="Add Flow To Controller And Verify" owner="FlowLib">
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:19:50.931039" level="INFO">PUT Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=32 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=32 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Content-Length': '667', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;LOCAL&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination&gt;&lt;address&gt;ff:ff:ff:ff:ff:ff&lt;/address&gt;&lt;/ethernet-destination&gt;&lt;/ethernet-match&gt;&lt;ipv4-source&gt;11.3.0.0/16&lt;/ipv4-source&gt;&lt;ipv4-destination&gt;99.0.0.0/8&lt;/ipv4-destination&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;32&lt;/id&gt;&lt;priority&gt;12345&lt;/priority&gt;&lt;/flow&gt; 
 </msg>
<msg time="2026-10-20T23:19:50.931175" level="INFO">PUT Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=32 
 status=404, reason=Not Found 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-10-20T23:19:50.931430" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=32</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=${node_id}/flow-node-inventory:table=${table_id}/flow=${flow_id}</arg>
<arg>headers=${HEADERS_XML}</arg>
<arg>data=${flow_body}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:19:50.924491" elapsed="0.007711">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=32</status>
</kw>
<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-10-20T23:19:50.932871" elapsed="0.000050"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=${node_id}/flow-node-inventory:table=${table_id}/flow=${flow_id}?content=config</arg>
<arg>headers=${ACCEPT_XML}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:50.933267" elapsed="0.000075"/>
</kw>
<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-10-20T23:19:50.933858" elapsed="0.000046"/>
</kw>
<kw name="Compare Xml" owner="Common">
<arg>${flow_body}</arg>
<arg>${resp.text}</arg>
<doc>compare the two XML files to see if they contain the same data
but could be if different order.
It just split the xml in to lines and just check the line is in
the other file</doc>
<status status="NOT RUN" start="2026-10-20T23:19:50.934272" elapsed="0.000069"/>
</kw>
<arg>${flow.xml}</arg>
<arg>openflow%3A${dpid_id}</arg>
<arg>${flow.table_id}</arg>
<arg>${flow.id}</arg>
<doc>Push flow through REST-API and verify in data-store</doc>
<status status="FAIL" start="2026-10-20T23:19:50.922988" elapsed="0.011554">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=32</status>
</kw>
<kw name="Add Flow To Controller And Verify" owner="FlowLib">
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:19:51.942604" level="INFO">PUT Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=32 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=32 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Content-Length': '667', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;LOCAL&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination&gt;&lt;address&gt;ff:ff:ff:ff:ff:ff&lt;/address&gt;&lt;/ethernet-destination&gt;&lt;/ethernet-match&gt;&lt;ipv4-source&gt;11.3.0.0/16&lt;/ipv4-source&gt;&lt;ipv4-destination&gt;99.0.0.0/8&lt;/ipv4-destination&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;32&lt;/id&gt;&lt;priority&gt;12345&lt;/priority&gt;&lt;/flow&gt; 
 </msg>
<msg time="2026-10-20T23:19:51.942852" level="INFO">PUT Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=32 
 status=404, reason=Not Found 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-10-20T23:19:51.943051" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=32</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=${node_id}/flow-node-inventory:table=${table_id}/flow=${flow_id}</arg>
<arg>headers=${HEADERS_XML}</arg>
<arg>data=${flow_body}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:19:51.936745" elapsed="0.007091">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=32</status>
</kw>
<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-10-20T23:19:51.944467" elapsed="0.000050"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=${node_id}/flow-node-inventory:table=${table_id}/flow=${flow_id}?content=config</arg>
<arg>headers=${ACCEPT_XML}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:51.944879" elapsed="0.000044"/>
</kw>
<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-10-20T23:19:51.945443" elapsed="0.000044"/>
</kw>
<kw name="Compare Xml" owner="Common">
<arg>${flow_body}</arg>
<arg>${resp.text}</arg>
<doc>compare the two XML files to see if they contain the same data
but could be if different order.
It just split the xml in to lines and just check the line is in
the other file</doc>
<status status="NOT RUN" start="2026-10-20T23:19:51.945881" elapsed="0.000042"/>
</kw>
<arg>${flow.xml}</arg>
<arg>openflow%3A${dpid_id}</arg>
<arg>${flow.table_id}</arg>
<arg>${flow.id}</arg>
<doc>Push flow through REST-API and verify in data-store</doc>
<status status="FAIL" start="2026-10-20T23:19:51.935351" elapsed="0.010769">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=32</status>
</kw>
<kw name="Add Flow To Controller And Verify" owner="FlowLib">
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:19:52.954619" level="INFO">PUT Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=32 
 path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=32 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Content-Length': '667', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;flow xmlns="urn:opendaylight:flow:inventory"&gt;&lt;instructions&gt;&lt;instruction&gt;&lt;order&gt;0&lt;/order&gt;&lt;apply-actions&gt;&lt;action&gt;&lt;order&gt;0&lt;/order&gt;&lt;output-action&gt;&lt;output-node-connector&gt;LOCAL&lt;/output-node-connector&gt;&lt;/output-action&gt;&lt;/action&gt;&lt;/apply-actions&gt;&lt;/instruction&gt;&lt;/instructions&gt;&lt;match&gt;&lt;ethernet-match&gt;&lt;ethernet-type&gt;&lt;type&gt;0x800&lt;/type&gt;&lt;/ethernet-type&gt;&lt;ethernet-source&gt;&lt;address&gt;00:ab:cd:ef:01:23&lt;/address&gt;&lt;/ethernet-source&gt;&lt;ethernet-destination&gt;&lt;address&gt;ff:ff:ff:ff:ff:ff&lt;/address&gt;&lt;/ethernet-destination&gt;&lt;/ethernet-match&gt;&lt;ipv4-source&gt;11.3.0.0/16&lt;/ipv4-source&gt;&lt;ipv4-destination&gt;99.0.0.0/8&lt;/ipv4-destination&gt;&lt;/match&gt;&lt;table_id&gt;200&lt;/table_id&gt;&lt;id&gt;32&lt;/id&gt;&lt;priority&gt;12345&lt;/priority&gt;&lt;/flow&gt; 
 </msg>
<msg time="2026-10-20T23:19:52.954788" level="INFO">PUT Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=32 
 status=404, reason=Not Found 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-10-20T23:19:52.954985" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=32</msg>
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=${node_id}/flow-node-inventory:table=${table_id}/flow=${flow_id}</arg>
<arg>headers=${HEADERS_XML}</arg>
<arg>data=${flow_body}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:19:52.948411" elapsed="0.007361">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=32</status>
</kw>
<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-10-20T23:19:52.956428" elapsed="0.000051"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<var>${resp}</var>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}/node=${node_id}/flow-node-inventory:table=${table_id}/flow=${flow_id}?content=config</arg>
<arg>headers=${ACCEPT_XML}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:52.956854" elapsed="0.000044"/>
</kw>
<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-10-20T23:19:52.957420" elapsed="0.000045"/>
</kw>
<kw name="Compare Xml" owner="Common">
<arg>${flow_body}</arg>
<arg>${resp.text}</arg>
<doc>compare the two XML files to see if they contain the same data
but could be if different order.
It just split the xml in to lines and just check the line is in
the other file</doc>
<status status="NOT RUN" start="2026-10-20T23:19:52.957857" elapsed="0.000043"/>
</kw>
<arg>${flow.xml}</arg>
<arg>openflow%3A${dpid_id}</arg>
<arg>${flow.table_id}</arg>
<arg>${flow.id}</arg>
<doc>Push flow through REST-API and verify in data-store</doc>
<status status="FAIL" start="2026-10-20T23:19:52.946939" elapsed="0.011158">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=32</status>
</kw>
<msg time="2026-10-20T23:19:52.958347" level="FAIL">Keyword 'Add Flow To Controller And Verify' failed after retrying for 3 seconds. The last error was: HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=32</msg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Add Flow To Controller And Verify</arg>
<arg>${flow.xml}</arg>
<arg>openflow%3A${dpid_id}</arg>
<arg>${flow.table_id}</arg>
<arg>${flow.id}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-10-20T23:19:49.915914" elapsed="3.042635">Keyword 'Add Flow To Controller And Verify' failed after retrying for 3 seconds. The last error was: HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=32</status>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>3s</arg>
<arg>1s</arg>
<arg>Validate Switch Output</arg>
<arg>${test_switch}</arg>
<arg>${test_switch.dump_all_flows}</arg>
<arg>${test_switch.flow_validations}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:52.959111" elapsed="0.000045"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>3s</arg>
<arg>1s</arg>
<arg>Remove Flow From Controller And Verify</arg>
<arg>openflow%3A${dpid_id}</arg>
<arg>${flow.table_id}</arg>
<arg>${flow.id}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:52.959788" elapsed="0.000046"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>3s</arg>
<arg>1s</arg>
<arg>Validate Switch Output</arg>
<arg>${test_switch}</arg>
<arg>${test_switch.dump_all_flows}</arg>
<arg>${test_switch.flow_validations}</arg>
<arg>false</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:52.960341" elapsed="0.000043"/>
</kw>
<arg>${TEST_NAME}</arg>
<arg>200</arg>
<arg>32</arg>
<arg>12345</arg>
<status status="FAIL" start="2026-10-20T23:19:49.600858" elapsed="3.359737">Keyword 'Add Flow To Controller And Verify' failed after retrying for 3 seconds. The last error was: HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=32</status>
</kw>
<doc>OF1.3 OFPP_LOCAL = 0xfffffffe, /* Local openflow "port". */</doc>
<tag>local</tag>
<status status="FAIL" start="2026-10-20T23:19:49.599738" elapsed="3.361220">Keyword 'Add Flow To Controller And Verify' failed after retrying for 3 seconds. The last error was: HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A248523506740546/flow-node-inventory:table=200/flow=32</status>
</test>
<kw name="OpenFlow Actions Suite Teardown" type="TEARDOWN">
<kw name="Clean OVSDB Test Environment" owner="OVSDB">
<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 or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:52.968045" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:52.967440" elapsed="0.000726"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:52.967391" elapsed="0.000831"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:19:52.968973" level="INFO">index=3
host=10.30.170.219
alias=None
port=22
timeout=5 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-10-20T23:19:52.969190" level="INFO">${current_ssh_connection} = index=3
host=10.30.170.219
alias=None
port=22
timeout=5 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-10-20T23:19:52.968712" elapsed="0.000533"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:52.970407" level="INFO">Attempting to execute command "sudo mn -c" on remote system "10.30.170.219" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:52.969719" elapsed="0.000785"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:19:52.971648" 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-10-20T23:19:52.970930" elapsed="0.000792"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-20T23:19:52.973528" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:19:52.973705" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-20T23:19:52.972906" elapsed="0.000850"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:19:52.974097" elapsed="0.000935"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:19:52.976881" level="INFO">Logging into '10.30.170.219:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:19:53.593643" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Tue Oct 20 23:19:53 UTC 2026

  System load:  0.04               Processes:             110
  Usage of /:   19.8% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.219
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

5 updates can be applied immediately.
To see these additional updates run: apt list --upgradable

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


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


Last login: Tue Oct 20 23:19:25 2026 from 10.30.170.114
[?2004h[jenkins@releng-34016-79-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-10-20T23:19:52.976341" elapsed="0.617438"/>
</kw>
<msg time="2026-10-20T23:19:53.593853" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:19:52.975438" elapsed="0.618501"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-10-20T23:19:52.972162" elapsed="0.621877"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:19:53.594559" level="INFO">Executing command 'sudo mn -c'.</msg>
<msg time="2026-10-20T23:19:54.814954" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:19:54.815279" level="INFO">${stdout} = </msg>
<msg time="2026-10-20T23:19:54.815414" 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-10-20T23:19:53.594330" elapsed="1.221138"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:19:54.816026" elapsed="0.000484"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:54.817687" 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 --if-exists del-br s1
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-10-20T23:19:54.817079" elapsed="0.000779"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:19:54.818254" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:19:54.818017" elapsed="0.000373"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:54.817970" elapsed="0.000470"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-10-20T23:19:54.818757" elapsed="0.000063"/>
</return>
<status status="PASS" start="2026-10-20T23:19:54.818553" elapsed="0.000339"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:54.818520" elapsed="0.000424"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:19:54.819015" elapsed="0.000029"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-10-20T23:19:54.821767" elapsed="0.000258"/>
</kw>
<msg time="2026-10-20T23:19:54.822113" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:19:54.820569" elapsed="0.001675"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:54.822694" elapsed="0.000066"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:54.823069" elapsed="0.000042"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-10-20T23:19:54.819751" elapsed="0.003487"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-10-20T23:19:52.966130" elapsed="1.857298"/>
</kw>
<msg time="2026-10-20T23:19:54.823533" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:19:52.964805" elapsed="1.858847"/>
</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-10-20T23:19:52.963938" elapsed="1.859893"/>
</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 or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:54.828197" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:54.827603" elapsed="0.000741"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:54.827564" elapsed="0.000836"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:19:54.829107" level="INFO">index=3
host=10.30.170.219
alias=None
port=22
timeout=5 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-10-20T23:19:54.829340" level="INFO">${current_ssh_connection} = index=3
host=10.30.170.219
alias=None
port=22
timeout=5 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-10-20T23:19:54.828872" elapsed="0.000529"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:54.830524" 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.219" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:54.829849" elapsed="0.000771"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:19:54.831773" level="INFO">${conn_id} = 5</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-20T23:19:54.831052" elapsed="0.000777"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-20T23:19:54.833608" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:19:54.833785" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-20T23:19:54.833004" elapsed="0.000832"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:19:54.834253" elapsed="0.000702"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:19:54.836800" level="INFO">Logging into '10.30.170.219:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:19:55.198663" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Tue Oct 20 23:19:53 UTC 2026

  System load:  0.04               Processes:             110
  Usage of /:   19.8% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.219
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

5 updates can be applied immediately.
To see these additional updates run: apt list --upgradable

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


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


Last login: Tue Oct 20 23:19:53 2026 from 10.30.170.114
[?2004h[jenkins@releng-34016-79-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-10-20T23:19:54.836235" elapsed="0.362562"/>
</kw>
<msg time="2026-10-20T23:19:55.198868" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:19:54.835360" elapsed="0.363591"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-10-20T23:19:54.832268" elapsed="0.366780"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:19:55.199553" 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-10-20T23:19:55.242408" level="INFO">Command exited with return code -1.</msg>
<msg time="2026-10-20T23:19:55.242632" level="INFO">${stdout} = </msg>
<msg time="2026-10-20T23:19:55.242718" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:19:55.199337" elapsed="0.043452"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:19:55.243137" elapsed="0.000422"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:55.244700" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:55.244115" elapsed="0.000691"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:19:55.245193" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:19:55.244959" elapsed="0.000334"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:55.244913" 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-10-20T23:19:55.245666" elapsed="0.000055"/>
</return>
<status status="PASS" start="2026-10-20T23:19:55.245485" elapsed="0.000328"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:55.245453" elapsed="0.000411"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:19:55.245934" elapsed="0.000029"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-10-20T23:19:55.249006" elapsed="0.000260"/>
</kw>
<msg time="2026-10-20T23:19:55.249392" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:19:55.247463" elapsed="0.002066"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:55.249959" elapsed="0.000046"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:55.250342" 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-10-20T23:19:55.246631" elapsed="0.003883"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-10-20T23:19:54.826693" elapsed="0.423975"/>
</kw>
<msg time="2026-10-20T23:19:55.250792" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:19:54.825475" elapsed="0.425441"/>
</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-10-20T23:19:54.824193" elapsed="0.426874"/>
</kw>
<arg>${tools_system}</arg>
<status status="PASS" start="2026-10-20T23:19:52.963303" elapsed="2.287876"/>
</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 or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:55.255179" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:55.254591" elapsed="0.000815"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:55.254552" elapsed="0.000912"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:19:55.256156" level="INFO">index=3
host=10.30.170.219
alias=None
port=22
timeout=5 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-10-20T23:19:55.256398" level="INFO">${current_ssh_connection} = index=3
host=10.30.170.219
alias=None
port=22
timeout=5 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-10-20T23:19:55.255922" elapsed="0.000534"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:55.257599" level="INFO">Attempting to execute command "sudo ovs-vsctl del-manager" on remote system "10.30.170.219" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:55.256919" elapsed="0.000777"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:19:55.258846" level="INFO">${conn_id} = 6</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-20T23:19:55.258118" elapsed="0.000783"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-20T23:19:55.260648" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:19:55.260827" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-20T23:19:55.260063" elapsed="0.000818"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:19:55.261218" elapsed="0.000699"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:19:55.263720" level="INFO">Logging into '10.30.170.219:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:19:55.628432" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Tue Oct 20 23:19:53 UTC 2026

  System load:  0.04               Processes:             110
  Usage of /:   19.8% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.219
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

5 updates can be applied immediately.
To see these additional updates run: apt list --upgradable

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


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


Last login: Tue Oct 20 23:19:55 2026 from 10.30.170.114
[?2004h[jenkins@releng-34016-79-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-10-20T23:19:55.263166" elapsed="0.365385"/>
</kw>
<msg time="2026-10-20T23:19:55.628620" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:19:55.262287" elapsed="0.366412"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-10-20T23:19:55.259371" elapsed="0.369439"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:19:55.629295" level="INFO">Executing command 'sudo ovs-vsctl del-manager'.</msg>
<msg time="2026-10-20T23:19:55.651989" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:19:55.652185" level="INFO">${stdout} = </msg>
<msg time="2026-10-20T23:19:55.652239" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:19:55.629086" elapsed="0.023182"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:19:55.652515" elapsed="0.000528"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:55.653786" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:55.653413" elapsed="0.000430"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:19:55.654093" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:19:55.653942" elapsed="0.000215"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:55.653913" elapsed="0.000274"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-10-20T23:19:55.654394" elapsed="0.000035"/>
</return>
<status status="PASS" start="2026-10-20T23:19:55.654256" elapsed="0.000216"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:55.654236" elapsed="0.000268"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:19:55.654548" elapsed="0.000019"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-10-20T23:19:55.656211" elapsed="0.000178"/>
</kw>
<msg time="2026-10-20T23:19:55.656452" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:19:55.655486" 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="NOT RUN" start="2026-10-20T23:19:55.656791" elapsed="0.000029"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:55.657012" elapsed="0.000026"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-10-20T23:19:55.654977" elapsed="0.002196"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-10-20T23:19:55.253713" elapsed="0.403557"/>
</kw>
<msg time="2026-10-20T23:19:55.657356" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:19:55.252482" elapsed="0.404949"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo ovs-vsctl del-manager</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-10-20T23:19:55.251600" elapsed="0.405926"/>
</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 or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:55.659970" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:55.659601" elapsed="0.000442"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:55.659577" elapsed="0.000498"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:19:55.660518" level="INFO">index=3
host=10.30.170.219
alias=None
port=22
timeout=5 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-10-20T23:19:55.660646" level="INFO">${current_ssh_connection} = index=3
host=10.30.170.219
alias=None
port=22
timeout=5 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-10-20T23:19:55.660368" elapsed="0.000312"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:55.661379" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl stop" on remote system "10.30.170.219" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:55.660956" elapsed="0.000484"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:19:55.662140" 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-10-20T23:19:55.661687" elapsed="0.000487"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-20T23:19:55.663262" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:19:55.663380" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-20T23:19:55.662915" elapsed="0.000496"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:19:55.663622" elapsed="0.000424"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:19:55.665138" level="INFO">Logging into '10.30.170.219:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:19:56.023454" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Tue Oct 20 23:19:53 UTC 2026

  System load:  0.04               Processes:             110
  Usage of /:   19.8% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.219
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

5 updates can be applied immediately.
To see these additional updates run: apt list --upgradable

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


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


Last login: Tue Oct 20 23:19:55 2026 from 10.30.170.114
[?2004h[jenkins@releng-34016-79-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-10-20T23:19:55.664821" elapsed="0.358737"/>
</kw>
<msg time="2026-10-20T23:19:56.023622" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:19:55.664277" elapsed="0.359416"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-10-20T23:19:55.662465" elapsed="0.361329"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:19:56.024227" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl stop'.</msg>
<msg time="2026-10-20T23:19:56.188416" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:19:56.188653" level="INFO">${stdout} =  * Exiting ovs-vswitchd (864)
 * Exiting ovsdb-server (818)</msg>
<msg time="2026-10-20T23:19:56.188742" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:19:56.024041" elapsed="0.164774"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:19:56.189196" elapsed="0.000439"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:56.190803" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:56.190198" elapsed="0.000692"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:19:56.191412" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:19:56.191145" elapsed="0.000372"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:56.191096" elapsed="0.000470"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-10-20T23:19:56.191887" elapsed="0.000058"/>
</return>
<status status="PASS" start="2026-10-20T23:19:56.191674" elapsed="0.000339"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:56.191644" elapsed="0.000418"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:19:56.192131" elapsed="0.000029"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-10-20T23:19:56.194878" elapsed="0.000256"/>
</kw>
<msg time="2026-10-20T23:19:56.195221" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:19:56.193672" elapsed="0.001708"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:56.195814" elapsed="0.000047"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:56.196169" elapsed="0.000042"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-10-20T23:19:56.192849" elapsed="0.003516"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-10-20T23:19:55.659072" elapsed="0.537454"/>
</kw>
<msg time="2026-10-20T23:19:56.196630" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:19:55.658325" elapsed="0.538423"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo /usr/share/openvswitch/scripts/ovs-ctl stop</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-10-20T23:19:55.657794" elapsed="0.539128"/>
</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 or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:56.200979" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:56.200349" elapsed="0.000747"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:56.200275" elapsed="0.000872"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:19:56.201867" level="INFO">index=3
host=10.30.170.219
alias=None
port=22
timeout=5 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-10-20T23:19:56.202072" level="INFO">${current_ssh_connection} = index=3
host=10.30.170.219
alias=None
port=22
timeout=5 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-10-20T23:19:56.201607" elapsed="0.000520"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:56.203262" level="INFO">Attempting to execute command "sudo rm -rf /etc/openvswitch/conf.db" on remote system "10.30.170.219" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:56.202600" elapsed="0.000787"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:19:56.204516" level="INFO">${conn_id} = 8</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-20T23:19:56.203804" elapsed="0.000766"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-20T23:19:56.206348" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:19:56.206506" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-20T23:19:56.205736" elapsed="0.000818"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:19:56.206934" elapsed="0.000679"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:19:56.209450" level="INFO">Logging into '10.30.170.219:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:19:56.569567" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Tue Oct 20 23:19:53 UTC 2026

  System load:  0.04               Processes:             110
  Usage of /:   19.8% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.219
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

5 updates can be applied immediately.
To see these additional updates run: apt list --upgradable

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


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


Last login: Tue Oct 20 23:19:55 2026 from 10.30.170.114
[?2004h[jenkins@releng-34016-79-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-10-20T23:19:56.208910" elapsed="0.360839"/>
</kw>
<msg time="2026-10-20T23:19:56.569834" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:19:56.208004" elapsed="0.361912"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-10-20T23:19:56.205025" elapsed="0.364988"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:19:56.570521" level="INFO">Executing command 'sudo rm -rf /etc/openvswitch/conf.db'.</msg>
<msg time="2026-10-20T23:19:56.583227" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:19:56.583344" level="INFO">${stdout} = </msg>
<msg time="2026-10-20T23:19:56.583384" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:19:56.570293" elapsed="0.013119"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:19:56.583567" elapsed="0.000180"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:56.584294" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:56.584029" elapsed="0.000323"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:19:56.584557" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:19:56.584438" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:56.584407" elapsed="0.000221"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-10-20T23:19:56.584754" elapsed="0.000035"/>
</return>
<status status="PASS" start="2026-10-20T23:19:56.584675" elapsed="0.000146"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:56.584662" elapsed="0.000181"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:19:56.584873" elapsed="0.000013"/>
</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-10-20T23:19:56.586105" elapsed="0.000114"/>
</kw>
<msg time="2026-10-20T23:19:56.586258" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:19:56.585566" 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="NOT RUN" start="2026-10-20T23:19:56.586516" elapsed="0.000020"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:56.586681" 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-10-20T23:19:56.585184" elapsed="0.001571"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-10-20T23:19:56.199444" elapsed="0.387394"/>
</kw>
<msg time="2026-10-20T23:19:56.586885" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:19:56.198217" elapsed="0.388721"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo rm -rf /etc/openvswitch/conf.db</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-10-20T23:19:56.197351" elapsed="0.389655"/>
</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 or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:56.588750" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:56.588496" elapsed="0.000319"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:56.588478" elapsed="0.000369"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:19:56.589147" level="INFO">index=3
host=10.30.170.219
alias=None
port=22
timeout=5 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-10-20T23:19:56.589237" level="INFO">${current_ssh_connection} = index=3
host=10.30.170.219
alias=None
port=22
timeout=5 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-10-20T23:19:56.589040" elapsed="0.000222"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:56.589754" level="INFO">Attempting to execute command "sudo /usr/share/openvswitch/scripts/ovs-ctl start" on remote system "10.30.170.219" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:56.589467" elapsed="0.000345"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:19:56.590296" level="INFO">${conn_id} = 9</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-20T23:19:56.589989" elapsed="0.000346"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-20T23:19:56.591144" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:19:56.591212" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-20T23:19:56.590889" elapsed="0.000344"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:19:56.591398" elapsed="0.000284"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:19:56.592637" level="INFO">Logging into '10.30.170.219:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:19:56.952535" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Tue Oct 20 23:19:53 UTC 2026

  System load:  0.04               Processes:             110
  Usage of /:   19.8% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.219
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

5 updates can be applied immediately.
To see these additional updates run: apt list --upgradable

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


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


Last login: Tue Oct 20 23:19:56 2026 from 10.30.170.114
[?2004h[jenkins@releng-34016-79-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-10-20T23:19:56.592226" elapsed="0.360423"/>
</kw>
<msg time="2026-10-20T23:19:56.952718" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:19:56.591858" elapsed="0.360954"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-10-20T23:19:56.590574" elapsed="0.362335"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:19:56.953405" level="INFO">Executing command 'sudo /usr/share/openvswitch/scripts/ovs-ctl start'.</msg>
<msg time="2026-10-20T23:19:57.107109" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:19:57.107393" level="INFO">${stdout} =  * /etc/openvswitch/conf.db does not exist
 * Creating empty database /etc/openvswitch/conf.db
 * Starting ovsdb-server
 * system ID not configured, please use --system-id
 * Configuring Open vSwitch ...</msg>
<msg time="2026-10-20T23:19:57.107490" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:19:56.953178" elapsed="0.154362"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:19:57.107949" elapsed="0.000445"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.109568" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:57.108972" 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-10-20T23:19:57.110076" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:19:57.109835" elapsed="0.000344"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.109764" elapsed="0.000464"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-10-20T23:19:57.110553" elapsed="0.000057"/>
</return>
<status status="PASS" start="2026-10-20T23:19:57.110370" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.110336" elapsed="0.000391"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:19:57.110816" elapsed="0.000029"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-10-20T23:19:57.113521" elapsed="0.000253"/>
</kw>
<msg time="2026-10-20T23:19:57.113886" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:19:57.112347" elapsed="0.001667"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:57.114444" elapsed="0.000046"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:57.114816" 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-10-20T23:19:57.111513" elapsed="0.003474"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-10-20T23:19:56.588116" elapsed="0.527022"/>
</kw>
<msg time="2026-10-20T23:19:57.115247" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:19:56.587571" elapsed="0.527833"/>
</kw>
<arg>${tools_system}</arg>
<arg>sudo /usr/share/openvswitch/scripts/ovs-ctl start</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-10-20T23:19:56.587187" elapsed="0.528373"/>
</kw>
<doc>General Use Keyword attempting to sanitize test environment for OVSDB related
tests. Not every step will always be neccessary, but should not cause any problems for
any new ovsdb test suites.</doc>
<status status="PASS" start="2026-10-20T23:19:52.962669" elapsed="4.153002"/>
</kw>
<kw name="Cleanup Switch" owner="SwitchUtils">
<kw name="Iterate Switch Commands From List" owner="SwitchUtils">
<kw name="Configure Connection Index And Prompt Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${switch.connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-10-20T23:19:57.121381" elapsed="0.000340"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.120782" elapsed="0.001035"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.120743" elapsed="0.001129"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Set Client Configuration" owner="SSHLibrary">
<arg>prompt=${switch.mgmt_prompt}</arg>
<arg>timeout=5s</arg>
<doc>Update the `configuration` of the current connection.</doc>
<status status="PASS" start="2026-10-20T23:19:57.122561" elapsed="0.000603"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.121986" elapsed="0.001259"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.121953" elapsed="0.001344"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Switch Connection" owner="Telnet">
<arg>${switch.connection_index}</arg>
<doc>Switches between active connections using an index or an alias.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:57.124005" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:57.123445" elapsed="0.000674"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.123411" elapsed="0.000758"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Set Prompt" owner="Telnet">
<arg>${switch.mgmt_prompt}</arg>
<arg>True</arg>
<doc>Sets the prompt used by the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:57.124919" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:57.124279" elapsed="0.000768"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.124247" elapsed="0.000849"/>
</if>
<arg>${switch}</arg>
<doc>when using multiple switch connections (e.g. more than one switch device) this keyword will switch the current connection index and prompt so that the following
Read or Write actions happen on the correct device.</doc>
<status status="PASS" start="2026-10-20T23:19:57.120440" elapsed="0.004754"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.126653" level="INFO">/sbin/ifconfig -a | egrep '^s' | awk '{print "sudo ovs-vsctl del-br",$1}' | sh</msg>
<arg>${cmd}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:57.126104" elapsed="0.000643"/>
</kw>
<kw name="Read Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Read" owner="SSHLibrary">
<doc>Consumes and returns everything available on the server output.</doc>
<status status="PASS" start="2026-10-20T23:19:57.128598" elapsed="0.000263"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.128021" elapsed="0.000910"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.127983" elapsed="0.000999"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Read" owner="Telnet">
<doc>Reads everything that is currently available in the output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:57.129634" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:57.129091" elapsed="0.000647"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.129058" elapsed="0.000728"/>
</if>
<arg>${switch}</arg>
<doc>Wraps the Read command so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:57.127652" elapsed="0.002252"/>
</kw>
<kw name="Execute Command Wrapper" owner="SwitchUtils">
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;ssh&quot;">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:19:57.131820" level="INFO">Executing command '/sbin/ifconfig -a | egrep '^s' | awk '{print "sudo ovs-vsctl del-br",$1}' | sh'.</msg>
<msg time="2026-10-20T23:19:57.144873" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:19:57.145066" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:19:57.131566" elapsed="0.013551"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.130922" elapsed="0.014271"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${output}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:57.145707" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:57.145247" elapsed="0.000598"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.130886" elapsed="0.015004"/>
</if>
<if>
<branch type="IF" condition="&quot;${switch.mgmt_protocol}&quot; == &quot;telnet&quot;">
<kw name="Execute Command" owner="Telnet">
<var>${output}</var>
<arg>${cmd}</arg>
<doc>Executes the given `command` and reads, logs, and returns resulting output.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:57.146583" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:57.146002" elapsed="0.000697"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.147783" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>${output}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:57.147162" elapsed="0.000696"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.146750" elapsed="0.001180"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.145969" elapsed="0.002004"/>
</if>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-20T23:19:57.148045" elapsed="0.000056"/>
</return>
<arg>${switch}</arg>
<arg>${cmd}</arg>
<doc>Wraps the Execute Command keyword so that depending on the switch.mgmt_protocol the right
library (Telnet or SSHLibrary) is used.</doc>
<status status="PASS" start="2026-10-20T23:19:57.130498" elapsed="0.017780"/>
</kw>
<var name="${cmd}">/sbin/ifconfig -a | egrep '^s' | awk '{print "sudo ovs-vsctl del-br",$1}' | sh</var>
<status status="PASS" start="2026-10-20T23:19:57.125608" elapsed="0.022776"/>
</iter>
<var>${cmd}</var>
<value>@{cmd_list}</value>
<status status="PASS" start="2026-10-20T23:19:57.125300" elapsed="0.023150"/>
</for>
<arg>${switch}</arg>
<arg>${switch.cleanup_cmds}</arg>
<doc>Each string in the @{cmd_list} argument is executed on the switch.connection_index.</doc>
<status status="PASS" start="2026-10-20T23:19:57.119368" elapsed="0.029189"/>
</kw>
<arg>${test_switch}</arg>
<doc>will execute and command strings stored in switch.cleanup_cmds</doc>
<status status="PASS" start="2026-10-20T23:19:57.116123" elapsed="0.032540"/>
</kw>
<kw name="Close All Connections" owner="SSHLibrary">
<doc>Closes all open connections.</doc>
<status status="PASS" start="2026-10-20T23:19:57.149008" elapsed="0.000426"/>
</kw>
<kw name="Close All Connections" owner="Telnet">
<doc>Closes all open connections and empties the connection cache.</doc>
<status status="PASS" start="2026-10-20T23:19:57.149763" elapsed="0.000259"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:52.962111" elapsed="4.188021"/>
</kw>
<doc>OF1.3 Suite for flow actions
- output ALL
- output CONTROLLER
- output TABLE
- output INPORT
- output LOCAL
- output NORMAL
- output FLOOD
- output ANY

NOTE: for OVS, INPORT does not appear to be supported</doc>
<status status="FAIL" start="2026-10-20T23:19:24.668363" elapsed="32.481827"/>
</suite>
<status status="FAIL" start="2026-10-20T23:19:11.506869" elapsed="45.644992"/>
</suite>
<suite id="s1-s5" name="Reconciliation" source="/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation">
<suite id="s1-s5-s1" name="010 Group Flows" source="/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/010_Group_Flows.robot">
<kw name="Initialization Phase" type="SETUP">
<kw name="ClusterManagement_Setup" owner="ClusterManagement">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.218552" level="INFO">${already_done} = False</msg>
<var>${already_done}</var>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>False</arg>
<doc>Returns variable value or `default` if the variable does not exist.</doc>
<status status="PASS" start="2026-10-20T23:19:57.216721" elapsed="0.001868"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-10-20T23:19:57.218821" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:19:57.218692" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.218665" elapsed="0.000244"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.219604" level="INFO">${ClusterManagement__has_setup_run} = True</msg>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>True</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-20T23:19:57.219156" elapsed="0.000503"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.220292" level="INFO">${cluster_size} = 1</msg>
<var>${cluster_size}</var>
<arg>\${NUM_ODL_SYSTEM}</arg>
<arg>1</arg>
<doc>Returns variable value or `default` if the variable does not exist.</doc>
<status status="PASS" start="2026-10-20T23:19:57.219903" elapsed="0.000443"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Convert To Integer" owner="BuiltIn">
<arg>${cluster_size}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-10-20T23:19:57.221065" elapsed="0.000436"/>
</kw>
<msg time="2026-10-20T23:19:57.221612" level="INFO">${status} = PASS</msg>
<msg time="2026-10-20T23:19:57.221654" level="INFO">${possibly_int_of_members} = 1</msg>
<var>${status}</var>
<var>${possibly_int_of_members}</var>
<arg>BuiltIn.Convert_To_Integer</arg>
<arg>${cluster_size}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-20T23:19:57.220575" elapsed="0.001100"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.222186" level="INFO">${int_of_members} = 1</msg>
<var>${int_of_members}</var>
<arg>'${status}' != 'PASS'</arg>
<arg>${1}</arg>
<arg>${possibly_int_of_members}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:19:57.221866" elapsed="0.000345"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.223131" level="INFO">@{member_index_list} = [ ]</msg>
<var>@{member_index_list}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:19:57.222882" elapsed="0.000274"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.223558" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:19:57.223301" elapsed="0.000281"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.224050" level="INFO">&amp;{index_to_ip_mapping} = { }</msg>
<var>&amp;{index_to_ip_mapping}</var>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.223764" elapsed="0.000311"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="ClusterManagement__Include_Member_Index" owner="ClusterManagement">
<kw name="Append To List" owner="Collections">
<arg>${member_index_list}</arg>
<arg>${index}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.224950" elapsed="0.000188"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.225771" level="INFO">${member_ip} = 10.30.170.223</msg>
<var>${member_ip}</var>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:57.225303" elapsed="0.000507"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given `key_value_pairs` and/or `items` to the `dictionary`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.225985" elapsed="0.000245"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.226969" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:57.226694" elapsed="0.000300"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-20T23:19:57.227035" elapsed="0.000029"/>
</return>
<msg time="2026-10-20T23:19:57.227161" level="INFO">${session_alias} = ClusterManagement__session_1</msg>
<var>${session_alias}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-10-20T23:19:57.226424" elapsed="0.000759"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:19:57.227713" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.170.223:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x756aa4b57f90&gt;, timeout=5, proxies=None, verify=False,                     debug=0 </msg>
<arg>${session_alias}</arg>
<arg>http://${member_ip}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>timeout=${http_timeout}</arg>
<arg>max_retries=${http_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-10-20T23:19:57.227381" elapsed="0.000488"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${session_list}</arg>
<arg>${session_alias}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.228035" elapsed="0.000149"/>
</kw>
<arg>${index}</arg>
<arg>${member_index_list}</arg>
<arg>${session_list}</arg>
<arg>${index_to_ip_mapping}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Add a corresponding item based on index into the last three arguments.
Create the Http session whose alias is added to list.</doc>
<status status="PASS" start="2026-10-20T23:19:57.224495" elapsed="0.003746"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-10-20T23:19:57.224323" elapsed="0.003958"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-10-20T23:19:57.224126" elapsed="0.004203"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.228863" level="INFO">${ClusterManagement__member_index_list} = [1]</msg>
<arg>\${ClusterManagement__member_index_list}</arg>
<arg>${member_index_list}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-20T23:19:57.228524" elapsed="0.000379"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.229432" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.170.223'}</msg>
<arg>\${ClusterManagement__index_to_ip_mapping}</arg>
<arg>${index_to_ip_mapping}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-20T23:19:57.229095" elapsed="0.000416"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.230036" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1']</msg>
<arg>\${ClusterManagement__session_list}</arg>
<arg>${session_list}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-20T23:19:57.229704" elapsed="0.000371"/>
</kw>
<arg>int_of_members=${int_of_members}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Construct index list, session list and IP mapping, publish them as suite variables.</doc>
<status status="PASS" start="2026-10-20T23:19:57.222489" elapsed="0.007638"/>
</kw>
<doc>Detect repeated call, or detect number of members and initialize derived suite variables.
Http sessions are created with parameters to not waste time when ODL is no accepting connections properly.</doc>
<status status="PASS" start="2026-10-20T23:19:57.216334" elapsed="0.013849"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:19:57.230555" level="INFO">Creating Session using : alias=session, url=http://10.30.170.223:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x756aa4c7cfd0&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-10-20T23:19:57.230371" elapsed="0.000305"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.231179" 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-10-20T23:19:57.230896" elapsed="0.000307"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.231687" 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-10-20T23:19:57.231416" elapsed="0.000296"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.232213" 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-10-20T23:19:57.231904" elapsed="0.000334"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.232737" 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-10-20T23:19:57.232428" elapsed="0.000334"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.233295" 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-10-20T23:19:57.232952" elapsed="0.000383"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.233826" 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-10-20T23:19:57.233513" elapsed="0.000338"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.234323" level="INFO">${switches} = 3</msg>
<arg>${switches}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-20T23:19:57.234044" elapsed="0.000318"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.234823" level="INFO">${iter} = 100</msg>
<arg>${iter}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-20T23:19:57.234550" elapsed="0.000312"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.235328" level="INFO">${all_groups} = 600</msg>
<arg>${all_groups}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-20T23:19:57.235049" elapsed="0.000318"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.235838" level="INFO">${less_groups} = 594</msg>
<arg>${less_groups}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-20T23:19:57.235555" elapsed="0.000321"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.236339" level="INFO">${all_flows} = 303</msg>
<arg>${all_flows}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-20T23:19:57.236063" elapsed="0.000315"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.236838" level="INFO">${less_flows} = 300</msg>
<arg>${less_flows}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-20T23:19:57.236564" elapsed="0.000312"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.238422" level="INFO">${no_flows} = 3</msg>
<arg>${no_flows}</arg>
<arg>${SWITCHES}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-20T23:19:57.237062" elapsed="0.001400"/>
</kw>
<doc>Create controller session and set variables.</doc>
<status status="PASS" start="2026-10-20T23:19:57.215880" elapsed="0.022636"/>
</kw>
<test id="s1-s5-s1-t1" name="Add Group 1 In Every Switch" line="24">
<for flavor="IN RANGE">
<iter>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.239649" 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-10-20T23:19:57.239281" elapsed="0.000394"/>
</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-10-20T23:19:57.253370" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-group-1.manganese/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:57.253048" elapsed="0.000348"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:19:57.254091" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/openflowplugin/add-group-1.manganese/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:19:57.253885" elapsed="0.000277">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/openflowplugin/add-group-1.manganese/location.uri' does not exist.</status>
</kw>
<msg time="2026-10-20T23:19:57.254281" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:19:57.253553" elapsed="0.000766"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.254825" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/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-10-20T23:19:57.254495" elapsed="0.000355"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-20T23:19:57.255128" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/openflowplugin/add-group-1/location.uri"&gt;/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/openflowplugin/add-group-1/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-10-20T23:19:57.255261" 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-10-20T23:19:57.255015" elapsed="0.000270"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.255714" 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-10-20T23:19:57.255494" elapsed="0.000261"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.256672" 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-10-20T23:19:57.256442" elapsed="0.000270"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.257145" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.256895" elapsed="0.000274"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.257765" 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-10-20T23:19:57.257496" elapsed="0.000293"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-10-20T23:19:57.258716" 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-10-20T23:19:57.258286" elapsed="0.000455"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-10-20T23:19:57.258786" elapsed="0.000041"/>
</return>
<msg time="2026-10-20T23:19:57.258928" 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-10-20T23:19:57.257969" elapsed="0.000981"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</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-10-20T23:19:57.259112" elapsed="0.000169"/>
</kw>
<var name="${key}">NODE</var>
<var name="${value}">openflow:1</var>
<status status="PASS" start="2026-10-20T23:19:57.257366" elapsed="0.001970"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-10-20T23:19:57.257211" elapsed="0.002159"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-20T23:19:57.259409" elapsed="0.000025"/>
</return>
<msg time="2026-10-20T23:19:57.259537" level="INFO">${mapping_to_use} = {'NODE': 'openflow%3A1'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-20T23:19:57.256078" elapsed="0.003482"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.255828" elapsed="0.003761"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:57.259759" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:57.259612" elapsed="0.000208"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.255810" elapsed="0.004030"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.264275" 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-10-20T23:19:57.259998" elapsed="0.004329"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:19:57.264377" 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-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-group-1.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-group-1.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="PASS" start="2026-10-20T23:19:57.252508" elapsed="0.011974"/>
</kw>
<msg time="2026-10-20T23:19:57.264531" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:19:57.248288" elapsed="0.016287"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>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-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-group-1.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-group-1.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:57.268545" elapsed="0.000025"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>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-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-group-1.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-group-1.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:57.272619" 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-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-group-1.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-group-1.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:57.276573" elapsed="0.000024"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:57.276755" elapsed="0.000020"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:57.276954" elapsed="0.000019"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:57.277317" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:57.277155" elapsed="0.000215"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:19:57.277140" 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-10-20T23:19:57.277557" 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-10-20T23:19:57.277748" elapsed="0.000018"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:57.277926" elapsed="0.000019"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-20T23:19:57.277114" elapsed="0.000861"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-20T23:19:57.277022" elapsed="0.000977"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Concatenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:57.278157" elapsed="0.000018"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-20T23:19:57.278224" elapsed="0.000015"/>
</return>
<msg time="2026-10-20T23:19:57.278349" 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-10-20T23:19:57.247682" elapsed="0.030692"/>
</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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:19:57.282354" elapsed="0.000335"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.287463" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-group-1.manganese/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 variable.</doc>
<status status="PASS" start="2026-10-20T23:19:57.287137" elapsed="0.000352"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:19:57.288173" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/openflowplugin/add-group-1.manganese/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-10-20T23:19:57.287976" elapsed="0.000268">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/openflowplugin/add-group-1.manganese/post_data.prolog.json' does not exist.</status>
</kw>
<msg time="2026-10-20T23:19:57.288346" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:19:57.287646" elapsed="0.000723"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.288869" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/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-10-20T23:19:57.288544" elapsed="0.000391"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-20T23:19:57.289226" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/openflowplugin/add-group-1/post_data.prolog.json"&gt;/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/openflowplugin/add-group-1/post_data.prolog.json&lt;/a&gt;'.</msg>
<msg time="2026-10-20T23:19:57.289383" 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-10-20T23:19:57.289109" elapsed="0.000299"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.289848" 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-10-20T23:19:57.289614" elapsed="0.000277"/>
</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-10-20T23:19:57.290206" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:57.289955" elapsed="0.000305"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.290720" 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 variable.</doc>
<status status="PASS" start="2026-10-20T23:19:57.290452" elapsed="0.000292"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.290284" elapsed="0.000493"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.289937" elapsed="0.000871"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.291381" 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-10-20T23:19:57.290977" elapsed="0.000430"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:19:57.291452" elapsed="0.000027"/>
</return>
<msg time="2026-10-20T23:19:57.291579" 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-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-group-1.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-group-1.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="PASS" start="2026-10-20T23:19:57.286620" elapsed="0.004982"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.296621" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-group-1.manganese/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 variable.</doc>
<status status="PASS" start="2026-10-20T23:19:57.296301" elapsed="0.000347"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:19:57.297322" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/openflowplugin/add-group-1.manganese/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-10-20T23:19:57.297136" elapsed="0.000246">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/openflowplugin/add-group-1.manganese/post_data.epilog.json' does not exist.</status>
</kw>
<msg time="2026-10-20T23:19:57.297476" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:19:57.296816" elapsed="0.000684"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.298011" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/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-10-20T23:19:57.297682" elapsed="0.000354"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-20T23:19:57.298335" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/openflowplugin/add-group-1/post_data.epilog.json"&gt;/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/openflowplugin/add-group-1/post_data.epilog.json&lt;/a&gt;'.</msg>
<msg time="2026-10-20T23:19:57.298458" 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-10-20T23:19:57.298206" elapsed="0.000275"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.298920" level="INFO">  ]
}
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:57.298685" elapsed="0.000276"/>
</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-10-20T23:19:57.299272" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:57.299021" elapsed="0.000321"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.299777" 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 variable.</doc>
<status status="PASS" start="2026-10-20T23:19:57.299515" elapsed="0.000297"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.299366" elapsed="0.000478"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.299003" elapsed="0.000862"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.300425" 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-10-20T23:19:57.300032" elapsed="0.000419"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:19:57.300525" elapsed="0.000029"/>
</return>
<msg time="2026-10-20T23:19:57.300654" 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-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-group-1.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-group-1.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="PASS" start="2026-10-20T23:19:57.295774" elapsed="0.004903"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.305432" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-group-1.manganese/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 variable.</doc>
<status status="PASS" start="2026-10-20T23:19:57.305116" elapsed="0.000342"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:19:57.306112" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/openflowplugin/add-group-1.manganese/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-10-20T23:19:57.305936" elapsed="0.000234">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/openflowplugin/add-group-1.manganese/data.item.json' does not exist.</status>
</kw>
<msg time="2026-10-20T23:19:57.306252" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:19:57.305612" elapsed="0.000662"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.306770" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/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-10-20T23:19:57.306463" elapsed="0.000332"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-20T23:19:57.307086" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/openflowplugin/add-group-1/data.item.json"&gt;/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/openflowplugin/add-group-1/data.item.json&lt;/a&gt;'.</msg>
<msg time="2026-10-20T23:19:57.307206" 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-10-20T23:19:57.306977" elapsed="0.000254"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.307671" 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-10-20T23:19:57.307454" elapsed="0.000261"/>
</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-10-20T23:19:57.308031" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:57.307774" elapsed="0.000311"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.308535" 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 variable.</doc>
<status status="PASS" start="2026-10-20T23:19:57.308257" elapsed="0.000302"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.308109" elapsed="0.000482"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.307758" elapsed="0.000853"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.309342" 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-10-20T23:19:57.308776" elapsed="0.000593"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:19:57.309413" elapsed="0.000027"/>
</return>
<msg time="2026-10-20T23:19:57.309539" 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-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-group-1.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-group-1.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-group-1/${file_name}.</doc>
<status status="PASS" start="2026-10-20T23:19:57.304642" elapsed="0.004921"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.309965" level="INFO">${items} = []</msg>
<var>${items}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:19:57.309719" elapsed="0.000270"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.310525" 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-10-20T23:19:57.310189" elapsed="0.000360"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:57.311086" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:57.310880" elapsed="0.000258"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.310866" elapsed="0.000295"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.311647" 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-10-20T23:19:57.311338" elapsed="0.000334"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.312393" 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-10-20T23:19:57.311858" elapsed="0.000563"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.312581" elapsed="0.000159"/>
</kw>
<var name="${iteration}">1</var>
<status status="PASS" start="2026-10-20T23:19:57.310836" elapsed="0.001938"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.313324" elapsed="0.000152"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.313101" elapsed="0.000410"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.313087" elapsed="0.000448"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.314016" 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-10-20T23:19:57.313694" elapsed="0.000347"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.314744" 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-10-20T23:19:57.314209" elapsed="0.000562"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.314940" elapsed="0.000148"/>
</kw>
<var name="${iteration}">2</var>
<status status="PASS" start="2026-10-20T23:19:57.313058" elapsed="0.002065"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.315507" elapsed="0.000146"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.315285" elapsed="0.000402"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.315271" elapsed="0.000439"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.316188" 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-10-20T23:19:57.315884" elapsed="0.000328"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.316921" 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-10-20T23:19:57.316395" elapsed="0.000552"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.317106" elapsed="0.000146"/>
</kw>
<var name="${iteration}">3</var>
<status status="PASS" start="2026-10-20T23:19:57.315243" elapsed="0.002043"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.317672" elapsed="0.000160"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.317467" elapsed="0.000400"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.317452" elapsed="0.000438"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.318376" 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-10-20T23:19:57.318053" elapsed="0.000348"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.319090" 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-10-20T23:19:57.318569" elapsed="0.000547"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.319272" elapsed="0.000161"/>
</kw>
<var name="${iteration}">4</var>
<status status="PASS" start="2026-10-20T23:19:57.317425" elapsed="0.002042"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.319847" elapsed="0.000144"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.319630" elapsed="0.000395"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.319616" elapsed="0.000432"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.320524" 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-10-20T23:19:57.320205" elapsed="0.000343"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.321250" 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-10-20T23:19:57.320720" 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-10-20T23:19:57.321483" elapsed="0.000145"/>
</kw>
<var name="${iteration}">5</var>
<status status="PASS" start="2026-10-20T23:19:57.319589" elapsed="0.002073"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.322043" elapsed="0.000143"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.321837" elapsed="0.000383"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.321822" elapsed="0.000421"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.322720" 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-10-20T23:19:57.322416" elapsed="0.000328"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.323450" 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-10-20T23:19:57.322924" elapsed="0.000552"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.323630" elapsed="0.000144"/>
</kw>
<var name="${iteration}">6</var>
<status status="PASS" start="2026-10-20T23:19:57.321782" elapsed="0.002036"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.324187" elapsed="0.000159"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.323984" elapsed="0.000398"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.323969" elapsed="0.000436"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.324885" 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-10-20T23:19:57.324563" elapsed="0.000347"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.325604" 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-10-20T23:19:57.325077" elapsed="0.000554"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.325785" elapsed="0.000161"/>
</kw>
<var name="${iteration}">7</var>
<status status="PASS" start="2026-10-20T23:19:57.323942" elapsed="0.002038"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.326371" elapsed="0.000145"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.326142" elapsed="0.000409"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.326128" elapsed="0.000446"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.327047" 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-10-20T23:19:57.326731" elapsed="0.000340"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.327775" 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-10-20T23:19:57.327237" elapsed="0.000576"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.327968" elapsed="0.000287"/>
</kw>
<var name="${iteration}">8</var>
<status status="PASS" start="2026-10-20T23:19:57.326100" 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-10-20T23:19:57.328682" elapsed="0.000157"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.328476" elapsed="0.000397"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.328462" elapsed="0.000434"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.329371" 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-10-20T23:19:57.329052" elapsed="0.000343"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.330089" 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-10-20T23:19:57.329561" elapsed="0.000555"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.330270" elapsed="0.000159"/>
</kw>
<var name="${iteration}">9</var>
<status status="PASS" start="2026-10-20T23:19:57.328434" elapsed="0.002029"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.330841" elapsed="0.000144"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.330625" elapsed="0.000394"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.330611" elapsed="0.000432"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.331557" 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-10-20T23:19:57.331233" elapsed="0.000349"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.332270" 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-10-20T23:19:57.331752" elapsed="0.000545"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.332468" elapsed="0.000144"/>
</kw>
<var name="${iteration}">10</var>
<status status="PASS" start="2026-10-20T23:19:57.330584" elapsed="0.002061"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.333021" elapsed="0.000143"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.332817" elapsed="0.000382"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.332791" elapsed="0.000431"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.333697" 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-10-20T23:19:57.333393" elapsed="0.000328"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.334422" 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-10-20T23:19:57.333900" elapsed="0.000548"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.334600" elapsed="0.000142"/>
</kw>
<var name="${iteration}">11</var>
<status status="PASS" start="2026-10-20T23:19:57.332764" elapsed="0.002012"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.335155" elapsed="0.000143"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.334951" elapsed="0.000397"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.334937" elapsed="0.000435"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.335847" 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-10-20T23:19:57.335528" elapsed="0.000343"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.336565" 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-10-20T23:19:57.336037" elapsed="0.000554"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.336744" elapsed="0.000160"/>
</kw>
<var name="${iteration}">12</var>
<status status="PASS" start="2026-10-20T23:19:57.334910" elapsed="0.002028"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.337302" elapsed="0.000160"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.337099" elapsed="0.000398"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.337085" elapsed="0.000436"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.338006" 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-10-20T23:19:57.337682" elapsed="0.000349"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.338747" 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-10-20T23:19:57.338195" elapsed="0.000578"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.338938" elapsed="0.000143"/>
</kw>
<var name="${iteration}">13</var>
<status status="PASS" start="2026-10-20T23:19:57.337058" elapsed="0.002057"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.339525" elapsed="0.000144"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.339302" elapsed="0.000403"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.339281" elapsed="0.000447"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.340213" 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-10-20T23:19:57.339903" elapsed="0.000334"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.340957" 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-10-20T23:19:57.340422" elapsed="0.000561"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.341137" elapsed="0.000143"/>
</kw>
<var name="${iteration}">14</var>
<status status="PASS" start="2026-10-20T23:19:57.339253" elapsed="0.002075"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.341734" elapsed="0.000157"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.341529" elapsed="0.000398"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.341515" elapsed="0.000435"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.342433" 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-10-20T23:19:57.342107" elapsed="0.000350"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.343251" 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-10-20T23:19:57.342624" 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-10-20T23:19:57.343451" elapsed="0.000145"/>
</kw>
<var name="${iteration}">15</var>
<status status="PASS" start="2026-10-20T23:19:57.341487" elapsed="0.002144"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.344017" elapsed="0.000145"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.343795" elapsed="0.000402"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.343780" elapsed="0.000440"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.344695" 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-10-20T23:19:57.344393" elapsed="0.000326"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.345425" 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-10-20T23:19:57.344898" elapsed="0.000560"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.345613" elapsed="0.000143"/>
</kw>
<var name="${iteration}">16</var>
<status status="PASS" start="2026-10-20T23:19:57.343753" elapsed="0.002037"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.346169" elapsed="0.000157"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.345966" elapsed="0.000396"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.345951" elapsed="0.000434"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.346860" 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-10-20T23:19:57.346542" elapsed="0.000343"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.347579" 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-10-20T23:19:57.347051" elapsed="0.000554"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.347757" elapsed="0.000157"/>
</kw>
<var name="${iteration}">17</var>
<status status="PASS" start="2026-10-20T23:19:57.345924" elapsed="0.002024"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.348329" elapsed="0.000145"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.348110" elapsed="0.000398"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.348096" elapsed="0.000435"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.349001" 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-10-20T23:19:57.348686" elapsed="0.000339"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.349717" 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-10-20T23:19:57.349197" elapsed="0.000545"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.349910" elapsed="0.000143"/>
</kw>
<var name="${iteration}">18</var>
<status status="PASS" start="2026-10-20T23:19:57.348069" elapsed="0.002017"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.350466" elapsed="0.000143"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.350246" elapsed="0.000397"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.350231" elapsed="0.000435"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.351139" 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-10-20T23:19:57.350835" elapsed="0.000328"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.351867" 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-10-20T23:19:57.351343" elapsed="0.000550"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.352076" elapsed="0.000145"/>
</kw>
<var name="${iteration}">19</var>
<status status="PASS" start="2026-10-20T23:19:57.350204" elapsed="0.002052"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.352650" elapsed="0.000143"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.352447" elapsed="0.000393"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.352432" elapsed="0.000432"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.353340" 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-10-20T23:19:57.353021" elapsed="0.000344"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.354060" 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-10-20T23:19:57.353532" elapsed="0.000554"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.354239" elapsed="0.000159"/>
</kw>
<var name="${iteration}">20</var>
<status status="PASS" start="2026-10-20T23:19:57.352400" elapsed="0.002033"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.354836" elapsed="0.000145"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.354621" elapsed="0.000395"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.354607" elapsed="0.000432"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.355516" 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-10-20T23:19:57.355196" elapsed="0.000345"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.356235" 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-10-20T23:19:57.355707" elapsed="0.000554"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.356431" elapsed="0.000143"/>
</kw>
<var name="${iteration}">21</var>
<status status="PASS" start="2026-10-20T23:19:57.354579" elapsed="0.002030"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.356989" elapsed="0.000142"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.356771" elapsed="0.000396"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.356756" elapsed="0.000440"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.357782" 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-10-20T23:19:57.357373" elapsed="0.000446"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.358506" 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-10-20T23:19:57.357986" elapsed="0.000547"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.358686" elapsed="0.000156"/>
</kw>
<var name="${iteration}">22</var>
<status status="PASS" start="2026-10-20T23:19:57.356729" elapsed="0.002147"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.359243" elapsed="0.000159"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.359039" elapsed="0.000398"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.359025" elapsed="0.000434"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.359932" 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-10-20T23:19:57.359616" elapsed="0.000340"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.360645" 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-10-20T23:19:57.360123" elapsed="0.000548"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.360835" elapsed="0.000145"/>
</kw>
<var name="${iteration}">23</var>
<status status="PASS" start="2026-10-20T23:19:57.358997" elapsed="0.002017"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.361494" elapsed="0.000148"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.361177" elapsed="0.000500"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.361163" elapsed="0.000537"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.362177" 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-10-20T23:19:57.361873" elapsed="0.000328"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.362941" 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-10-20T23:19:57.362418" elapsed="0.000550"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.363122" elapsed="0.000143"/>
</kw>
<var name="${iteration}">24</var>
<status status="PASS" start="2026-10-20T23:19:57.361136" elapsed="0.002162"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.363681" elapsed="0.000158"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.363478" elapsed="0.000397"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.363464" elapsed="0.000433"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.364370" 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-10-20T23:19:57.364053" elapsed="0.000342"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.365091" 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-10-20T23:19:57.364561" elapsed="0.000556"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.365270" elapsed="0.000159"/>
</kw>
<var name="${iteration}">25</var>
<status status="PASS" start="2026-10-20T23:19:57.363436" elapsed="0.002027"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.365839" elapsed="0.000143"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.365625" elapsed="0.000392"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.365611" elapsed="0.000429"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.366522" 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-10-20T23:19:57.366202" elapsed="0.000344"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.367232" 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-10-20T23:19:57.366712" elapsed="0.000547"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.367426" elapsed="0.000144"/>
</kw>
<var name="${iteration}">26</var>
<status status="PASS" start="2026-10-20T23:19:57.365584" elapsed="0.002020"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.367988" elapsed="0.000143"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.367771" elapsed="0.000395"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.367751" elapsed="0.000438"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.368664" 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-10-20T23:19:57.368360" elapsed="0.000328"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.369400" 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-10-20T23:19:57.368872" elapsed="0.000554"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.369578" elapsed="0.000142"/>
</kw>
<var name="${iteration}">27</var>
<status status="PASS" start="2026-10-20T23:19:57.367723" elapsed="0.002031"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.370132" elapsed="0.000149"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.369929" elapsed="0.000402"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.369914" elapsed="0.000441"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.370827" 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-10-20T23:19:57.370513" elapsed="0.000339"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.371538" 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-10-20T23:19:57.371017" elapsed="0.000547"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.371716" elapsed="0.000155"/>
</kw>
<var name="${iteration}">28</var>
<status status="PASS" start="2026-10-20T23:19:57.369886" elapsed="0.002026"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.372284" elapsed="0.000261"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.372074" elapsed="0.000534"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.372060" elapsed="0.000574"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.373114" 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-10-20T23:19:57.372795" elapsed="0.000344"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.373850" 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-10-20T23:19:57.373322" elapsed="0.000555"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.374032" elapsed="0.000144"/>
</kw>
<var name="${iteration}">29</var>
<status status="PASS" start="2026-10-20T23:19:57.372033" 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-10-20T23:19:57.374591" elapsed="0.000142"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.374388" elapsed="0.000380"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.374374" elapsed="0.000417"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.375267" 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-10-20T23:19:57.374966" elapsed="0.000325"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.375993" 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-10-20T23:19:57.375473" elapsed="0.000546"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.376173" elapsed="0.000159"/>
</kw>
<var name="${iteration}">30</var>
<status status="PASS" start="2026-10-20T23:19:57.374345" elapsed="0.002023"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.376732" elapsed="0.000156"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.376529" elapsed="0.000394"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.376515" elapsed="0.000431"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.377421" 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-10-20T23:19:57.377102" elapsed="0.000343"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.378135" 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-10-20T23:19:57.377612" elapsed="0.000550"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.378333" elapsed="0.000152"/>
</kw>
<var name="${iteration}">31</var>
<status status="PASS" start="2026-10-20T23:19:57.376488" elapsed="0.002032"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.378897" elapsed="0.000143"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.378681" elapsed="0.000394"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.378667" elapsed="0.000431"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.379571" 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-10-20T23:19:57.379253" elapsed="0.000343"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.380286" 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-10-20T23:19:57.379762" elapsed="0.000565"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.380482" elapsed="0.000141"/>
</kw>
<var name="${iteration}">32</var>
<status status="PASS" start="2026-10-20T23:19:57.378640" elapsed="0.002017"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.381042" elapsed="0.000142"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.380837" elapsed="0.000381"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.380822" elapsed="0.000419"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.381726" 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-10-20T23:19:57.381414" elapsed="0.000336"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.382452" 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-10-20T23:19:57.381927" elapsed="0.000551"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.382630" elapsed="0.000143"/>
</kw>
<var name="${iteration}">33</var>
<status status="PASS" start="2026-10-20T23:19:57.380783" elapsed="0.002065"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.383220" elapsed="0.000159"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.383016" elapsed="0.000407"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.383002" elapsed="0.000444"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.383917" 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-10-20T23:19:57.383602" elapsed="0.000340"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.384631" 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-10-20T23:19:57.384107" elapsed="0.000550"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.384822" elapsed="0.000146"/>
</kw>
<var name="${iteration}">34</var>
<status status="PASS" start="2026-10-20T23:19:57.382975" elapsed="0.002027"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.385382" elapsed="0.000144"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.385163" elapsed="0.000398"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.385149" elapsed="0.000435"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.386060" 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-10-20T23:19:57.385746" elapsed="0.000339"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.386783" 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-10-20T23:19:57.386250" elapsed="0.000570"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.386973" elapsed="0.000150"/>
</kw>
<var name="${iteration}">35</var>
<status status="PASS" start="2026-10-20T23:19:57.385122" elapsed="0.002036"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.387641" elapsed="0.000144"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.387429" elapsed="0.000402"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.387320" elapsed="0.000535"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.388332" 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-10-20T23:19:57.388012" elapsed="0.000345"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.389040" 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-10-20T23:19:57.388525" elapsed="0.000541"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.389219" elapsed="0.000160"/>
</kw>
<var name="${iteration}">36</var>
<status status="PASS" start="2026-10-20T23:19:57.387279" elapsed="0.002134"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.389777" elapsed="0.000155"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.389575" elapsed="0.000391"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.389560" elapsed="0.000429"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.390470" 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-10-20T23:19:57.390144" elapsed="0.000350"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.391176" 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-10-20T23:19:57.390659" elapsed="0.000543"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.391370" elapsed="0.000146"/>
</kw>
<var name="${iteration}">37</var>
<status status="PASS" start="2026-10-20T23:19:57.389533" elapsed="0.002017"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.391936" elapsed="0.000143"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.391710" elapsed="0.000404"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.391696" elapsed="0.000441"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.392613" 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-10-20T23:19:57.392293" elapsed="0.000344"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.393350" 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-10-20T23:19:57.392819" elapsed="0.000558"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.393562" elapsed="0.000145"/>
</kw>
<var name="${iteration}">38</var>
<status status="PASS" start="2026-10-20T23:19:57.391669" elapsed="0.002071"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.394123" elapsed="0.000142"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.393918" elapsed="0.000381"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.393904" elapsed="0.000434"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.394797" 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-10-20T23:19:57.394496" elapsed="0.000336"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.395517" 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-10-20T23:19:57.394999" elapsed="0.000544"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.395698" elapsed="0.000154"/>
</kw>
<var name="${iteration}">39</var>
<status status="PASS" start="2026-10-20T23:19:57.393876" elapsed="0.002011"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.396253" elapsed="0.000159"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.396049" elapsed="0.000397"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.396035" elapsed="0.000435"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.396941" 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-10-20T23:19:57.396625" elapsed="0.000340"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.397656" 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-10-20T23:19:57.397131" elapsed="0.000551"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.397863" elapsed="0.000144"/>
</kw>
<var name="${iteration}">40</var>
<status status="PASS" start="2026-10-20T23:19:57.396008" elapsed="0.002033"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.398437" elapsed="0.000142"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.398210" elapsed="0.000404"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.398190" elapsed="0.000447"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.399119" 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-10-20T23:19:57.398814" elapsed="0.000329"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.399850" 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-10-20T23:19:57.399323" elapsed="0.000553"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.400029" elapsed="0.000143"/>
</kw>
<var name="${iteration}">41</var>
<status status="PASS" start="2026-10-20T23:19:57.398162" elapsed="0.002043"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.400597" elapsed="0.000142"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.400393" elapsed="0.000380"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.400379" elapsed="0.000417"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.401274" 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-10-20T23:19:57.400964" elapsed="0.000335"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.402002" 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-10-20T23:19:57.401482" elapsed="0.000547"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.402181" elapsed="0.000162"/>
</kw>
<var name="${iteration}">42</var>
<status status="PASS" start="2026-10-20T23:19:57.400351" elapsed="0.002027"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.402855" elapsed="0.000144"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.402639" elapsed="0.000395"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.402625" elapsed="0.000432"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.403536" 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-10-20T23:19:57.403214" elapsed="0.000346"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.404284" 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-10-20T23:19:57.403761" elapsed="0.000565"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.404482" elapsed="0.000144"/>
</kw>
<var name="${iteration}">43</var>
<status status="PASS" start="2026-10-20T23:19:57.402597" elapsed="0.002063"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.405036" elapsed="0.000142"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.404832" elapsed="0.000382"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.404817" elapsed="0.000420"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.405710" 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-10-20T23:19:57.405407" elapsed="0.000327"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.406450" 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-10-20T23:19:57.405911" elapsed="0.000565"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.406630" elapsed="0.000143"/>
</kw>
<var name="${iteration}">44</var>
<status status="PASS" start="2026-10-20T23:19:57.404780" elapsed="0.002038"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.407186" elapsed="0.000159"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.406983" elapsed="0.000397"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.406969" elapsed="0.000434"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.407874" 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-10-20T23:19:57.407560" elapsed="0.000339"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.408585" 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-10-20T23:19:57.408064" elapsed="0.000547"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.408764" elapsed="0.000156"/>
</kw>
<var name="${iteration}">45</var>
<status status="PASS" start="2026-10-20T23:19:57.406942" elapsed="0.002013"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.409362" elapsed="0.000145"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.409142" elapsed="0.000400"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.409126" elapsed="0.000439"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.410040" 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-10-20T23:19:57.409721" elapsed="0.000343"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.410756" 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-10-20T23:19:57.410231" elapsed="0.000554"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.410951" elapsed="0.000143"/>
</kw>
<var name="${iteration}">46</var>
<status status="PASS" start="2026-10-20T23:19:57.409083" elapsed="0.002045"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.411530" elapsed="0.000144"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.411296" elapsed="0.000413"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.411282" elapsed="0.000450"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.412201" 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-10-20T23:19:57.411900" elapsed="0.000324"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.412937" 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-10-20T23:19:57.412405" elapsed="0.000558"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.413114" elapsed="0.000143"/>
</kw>
<var name="${iteration}">47</var>
<status status="PASS" start="2026-10-20T23:19:57.411249" elapsed="0.002041"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.413673" elapsed="0.000163"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.413470" elapsed="0.000435"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.413456" elapsed="0.000474"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.414513" 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-10-20T23:19:57.414185" elapsed="0.000353"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.415236" 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-10-20T23:19:57.414704" elapsed="0.000559"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.415432" elapsed="0.000145"/>
</kw>
<var name="${iteration}">48</var>
<status status="PASS" start="2026-10-20T23:19:57.413429" 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-10-20T23:19:57.416043" elapsed="0.000144"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.415838" elapsed="0.000384"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.415823" elapsed="0.000423"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.416722" 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-10-20T23:19:57.416418" elapsed="0.000329"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.417543" 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-10-20T23:19:57.416926" 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-10-20T23:19:57.417723" elapsed="0.000157"/>
</kw>
<var name="${iteration}">49</var>
<status status="PASS" start="2026-10-20T23:19:57.415782" elapsed="0.002133"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.418282" elapsed="0.000161"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.418078" elapsed="0.000400"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.418064" elapsed="0.000437"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.418975" 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-10-20T23:19:57.418657" elapsed="0.000344"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.419688" 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-10-20T23:19:57.419166" elapsed="0.000548"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.419882" elapsed="0.000144"/>
</kw>
<var name="${iteration}">50</var>
<status status="PASS" start="2026-10-20T23:19:57.418037" elapsed="0.002023"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.420440" elapsed="0.000143"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.420221" elapsed="0.000396"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.420207" elapsed="0.000433"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.421110" 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-10-20T23:19:57.420795" elapsed="0.000339"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.421836" 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-10-20T23:19:57.421300" elapsed="0.000564"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.422016" elapsed="0.000142"/>
</kw>
<var name="${iteration}">51</var>
<status status="PASS" start="2026-10-20T23:19:57.420180" elapsed="0.002012"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.422586" elapsed="0.000143"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.422377" elapsed="0.000386"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.422363" elapsed="0.000422"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.423253" 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-10-20T23:19:57.422954" elapsed="0.000324"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.424001" 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-10-20T23:19:57.423459" elapsed="0.000569"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.424180" elapsed="0.000197"/>
</kw>
<var name="${iteration}">52</var>
<status status="PASS" start="2026-10-20T23:19:57.422334" elapsed="0.002078"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.424778" elapsed="0.000163"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.424576" elapsed="0.000399"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.424562" elapsed="0.000436"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.425484" 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-10-20T23:19:57.425154" elapsed="0.000355"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.426191" 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-10-20T23:19:57.425675" elapsed="0.000542"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.426391" elapsed="0.000144"/>
</kw>
<var name="${iteration}">53</var>
<status status="PASS" start="2026-10-20T23:19:57.424535" elapsed="0.002034"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.426948" elapsed="0.000142"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.426732" elapsed="0.000394"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.426718" elapsed="0.000431"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.427638" 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-10-20T23:19:57.427324" elapsed="0.000338"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.428377" 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-10-20T23:19:57.427846" elapsed="0.000561"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.428561" elapsed="0.000142"/>
</kw>
<var name="${iteration}">54</var>
<status status="PASS" start="2026-10-20T23:19:57.426691" elapsed="0.002046"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.429127" elapsed="0.000146"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.428922" elapsed="0.000412"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.428902" elapsed="0.000457"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.429834" 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-10-20T23:19:57.429517" elapsed="0.000342"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.430558" 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-10-20T23:19:57.430024" elapsed="0.000560"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.430737" elapsed="0.000163"/>
</kw>
<var name="${iteration}">55</var>
<status status="PASS" start="2026-10-20T23:19:57.428875" elapsed="0.002060"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.431325" elapsed="0.000144"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.431107" elapsed="0.000398"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.431093" elapsed="0.000441"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.432117" 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-10-20T23:19:57.431695" elapsed="0.000446"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.432845" 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-10-20T23:19:57.432321" elapsed="0.000550"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.433024" elapsed="0.000143"/>
</kw>
<var name="${iteration}">56</var>
<status status="PASS" start="2026-10-20T23:19:57.431066" elapsed="0.002135"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.433582" elapsed="0.000143"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.433379" elapsed="0.000381"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.433365" elapsed="0.000418"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.434272" 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-10-20T23:19:57.433967" elapsed="0.000329"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.434997" 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-10-20T23:19:57.434478" elapsed="0.000575"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.435210" elapsed="0.000159"/>
</kw>
<var name="${iteration}">57</var>
<status status="PASS" start="2026-10-20T23:19:57.433337" elapsed="0.002067"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.435770" elapsed="0.000156"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.435566" elapsed="0.000395"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.435552" elapsed="0.000432"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.436459" 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-10-20T23:19:57.436140" elapsed="0.000343"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.437170" 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-10-20T23:19:57.436649" elapsed="0.000547"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.437366" elapsed="0.000144"/>
</kw>
<var name="${iteration}">58</var>
<status status="PASS" start="2026-10-20T23:19:57.435526" elapsed="0.002018"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.437922" elapsed="0.000144"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.437706" elapsed="0.000394"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.437692" elapsed="0.000431"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.438596" 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-10-20T23:19:57.438278" elapsed="0.000342"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.439349" 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-10-20T23:19:57.438813" elapsed="0.000563"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.439570" elapsed="0.000147"/>
</kw>
<var name="${iteration}">59</var>
<status status="PASS" start="2026-10-20T23:19:57.437665" elapsed="0.002085"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.440132" elapsed="0.000144"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.439926" elapsed="0.000400"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.439911" elapsed="0.000440"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.440830" 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-10-20T23:19:57.440507" elapsed="0.000348"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.441557" 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-10-20T23:19:57.441021" elapsed="0.000562"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.441737" elapsed="0.000157"/>
</kw>
<var name="${iteration}">60</var>
<status status="PASS" start="2026-10-20T23:19:57.439884" elapsed="0.002045"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.442296" elapsed="0.000160"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.442091" elapsed="0.000399"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.442077" elapsed="0.000437"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.442996" 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-10-20T23:19:57.442676" elapsed="0.000344"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.443729" 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-10-20T23:19:57.443186" elapsed="0.000569"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.443921" elapsed="0.000143"/>
</kw>
<var name="${iteration}">61</var>
<status status="PASS" start="2026-10-20T23:19:57.442050" elapsed="0.002049"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.444484" elapsed="0.000148"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.444260" elapsed="0.000407"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.444246" elapsed="0.000444"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.445167" 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-10-20T23:19:57.444863" elapsed="0.000328"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.445941" 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-10-20T23:19:57.445409" elapsed="0.000558"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.446121" elapsed="0.000143"/>
</kw>
<var name="${iteration}">62</var>
<status status="PASS" start="2026-10-20T23:19:57.444219" elapsed="0.002080"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.446684" elapsed="0.000254"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.446483" elapsed="0.000491"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.446468" elapsed="0.000530"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.447482" 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-10-20T23:19:57.447156" elapsed="0.000351"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.448197" 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-10-20T23:19:57.447675" elapsed="0.000549"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.448397" elapsed="0.000145"/>
</kw>
<var name="${iteration}">63</var>
<status status="PASS" start="2026-10-20T23:19:57.446441" elapsed="0.002135"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.448956" elapsed="0.000144"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.448737" elapsed="0.000397"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.448723" elapsed="0.000434"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.449642" 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-10-20T23:19:57.449331" elapsed="0.000335"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.450364" 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-10-20T23:19:57.449843" elapsed="0.000548"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.450544" elapsed="0.000143"/>
</kw>
<var name="${iteration}">64</var>
<status status="PASS" start="2026-10-20T23:19:57.448696" elapsed="0.002024"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.451097" elapsed="0.000142"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.450894" elapsed="0.000379"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.450880" elapsed="0.000416"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.451768" 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-10-20T23:19:57.451468" elapsed="0.000325"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.452492" 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-10-20T23:19:57.451972" elapsed="0.000546"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.452672" elapsed="0.000156"/>
</kw>
<var name="${iteration}">65</var>
<status status="PASS" start="2026-10-20T23:19:57.450853" elapsed="0.002010"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.453227" elapsed="0.000159"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.453023" elapsed="0.000398"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.453010" elapsed="0.000433"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.453922" 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-10-20T23:19:57.453605" elapsed="0.000341"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.454639" 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-10-20T23:19:57.454111" elapsed="0.000555"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.454832" elapsed="0.000150"/>
</kw>
<var name="${iteration}">66</var>
<status status="PASS" start="2026-10-20T23:19:57.452983" elapsed="0.002033"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.455395" elapsed="0.000144"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.455176" elapsed="0.000430"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.455162" elapsed="0.000468"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.456111" 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-10-20T23:19:57.455789" elapsed="0.000346"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.456846" 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-10-20T23:19:57.456303" elapsed="0.000570"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.457027" elapsed="0.000143"/>
</kw>
<var name="${iteration}">67</var>
<status status="PASS" start="2026-10-20T23:19:57.455135" elapsed="0.002069"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.457595" elapsed="0.000144"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.457383" elapsed="0.000391"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.457368" elapsed="0.000429"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.458271" 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-10-20T23:19:57.457968" elapsed="0.000327"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.458999" 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-10-20T23:19:57.458478" elapsed="0.000547"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.459180" elapsed="0.000159"/>
</kw>
<var name="${iteration}">68</var>
<status status="PASS" start="2026-10-20T23:19:57.457340" elapsed="0.002034"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.459743" elapsed="0.000164"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.459540" elapsed="0.000402"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.459526" elapsed="0.000439"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.460451" 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-10-20T23:19:57.460122" elapsed="0.000353"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.461165" 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-10-20T23:19:57.460641" elapsed="0.000550"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.461359" elapsed="0.000152"/>
</kw>
<var name="${iteration}">69</var>
<status status="PASS" start="2026-10-20T23:19:57.459499" elapsed="0.002046"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.462381" elapsed="0.000153"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.462143" elapsed="0.000426"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.461693" elapsed="0.000900"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.463077" 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-10-20T23:19:57.462755" elapsed="0.000346"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.463790" 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-10-20T23:19:57.463268" elapsed="0.000561"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.463983" elapsed="0.000145"/>
</kw>
<var name="${iteration}">70</var>
<status status="PASS" start="2026-10-20T23:19:57.461666" elapsed="0.002495"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.464542" elapsed="0.000143"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.464336" elapsed="0.000383"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.464320" elapsed="0.000422"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.465211" 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-10-20T23:19:57.464909" elapsed="0.000327"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.465951" 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-10-20T23:19:57.465423" elapsed="0.000554"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.466166" elapsed="0.000161"/>
</kw>
<var name="${iteration}">71</var>
<status status="PASS" start="2026-10-20T23:19:57.464279" elapsed="0.002083"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.466726" elapsed="0.000154"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.466522" elapsed="0.000392"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.466508" elapsed="0.000429"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.467410" 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-10-20T23:19:57.467093" elapsed="0.000342"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.468126" 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-10-20T23:19:57.467603" elapsed="0.000550"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.468322" elapsed="0.000146"/>
</kw>
<var name="${iteration}">72</var>
<status status="PASS" start="2026-10-20T23:19:57.466481" elapsed="0.002020"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.468880" elapsed="0.000143"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.468663" elapsed="0.000395"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.468649" elapsed="0.000432"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.469558" 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-10-20T23:19:57.469236" elapsed="0.000347"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.470267" 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-10-20T23:19:57.469749" elapsed="0.000544"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.470463" elapsed="0.000144"/>
</kw>
<var name="${iteration}">73</var>
<status status="PASS" start="2026-10-20T23:19:57.468622" elapsed="0.002019"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.471018" elapsed="0.000143"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.470813" elapsed="0.000382"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.470788" elapsed="0.000430"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.471693" 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-10-20T23:19:57.471391" elapsed="0.000326"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.472423" 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-10-20T23:19:57.471896" elapsed="0.000553"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.472604" elapsed="0.000143"/>
</kw>
<var name="${iteration}">74</var>
<status status="PASS" start="2026-10-20T23:19:57.470761" elapsed="0.002021"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.473165" elapsed="0.000158"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.472961" elapsed="0.000398"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.472946" elapsed="0.000436"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.473857" 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-10-20T23:19:57.473541" elapsed="0.000341"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.474576" 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-10-20T23:19:57.474052" elapsed="0.000551"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.474756" elapsed="0.000158"/>
</kw>
<var name="${iteration}">75</var>
<status status="PASS" start="2026-10-20T23:19:57.472919" elapsed="0.002030"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.475333" elapsed="0.000145"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.475114" elapsed="0.000399"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.475099" elapsed="0.000437"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.476029" 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-10-20T23:19:57.475699" elapsed="0.000354"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.476752" 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-10-20T23:19:57.476219" 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-10-20T23:19:57.476982" elapsed="0.000143"/>
</kw>
<var name="${iteration}">76</var>
<status status="PASS" start="2026-10-20T23:19:57.475072" elapsed="0.002088"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.515922" elapsed="0.000231"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.515604" elapsed="0.000604"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.515582" elapsed="0.000653"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.516782" 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-10-20T23:19:57.516421" elapsed="0.000408"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.517564" 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-10-20T23:19:57.517002" 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-10-20T23:19:57.517749" elapsed="0.000167"/>
</kw>
<var name="${iteration}">77</var>
<status status="PASS" start="2026-10-20T23:19:57.515512" 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-10-20T23:19:57.518352" elapsed="0.000148"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.518129" elapsed="0.000407"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.518115" elapsed="0.000444"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.519044" 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-10-20T23:19:57.518717" elapsed="0.000352"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.519758" 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-10-20T23:19:57.519233" elapsed="0.000551"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.519957" elapsed="0.000147"/>
</kw>
<var name="${iteration}">78</var>
<status status="PASS" start="2026-10-20T23:19:57.518087" elapsed="0.002050"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.520527" elapsed="0.000144"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.520318" elapsed="0.000389"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.520289" elapsed="0.000441"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.521206" 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-10-20T23:19:57.520901" elapsed="0.000329"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.521970" 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-10-20T23:19:57.521438" elapsed="0.000558"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.522150" elapsed="0.000150"/>
</kw>
<var name="${iteration}">79</var>
<status status="PASS" start="2026-10-20T23:19:57.520262" elapsed="0.002089"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.522718" elapsed="0.000158"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.522514" elapsed="0.000396"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.522500" elapsed="0.000433"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.523410" 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-10-20T23:19:57.523091" elapsed="0.000345"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.524116" 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-10-20T23:19:57.523602" elapsed="0.000541"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.524295" elapsed="0.000161"/>
</kw>
<var name="${iteration}">80</var>
<status status="PASS" start="2026-10-20T23:19:57.522473" elapsed="0.002017"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.524870" elapsed="0.000143"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.524651" elapsed="0.000396"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.524637" elapsed="0.000433"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.525546" 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-10-20T23:19:57.525226" elapsed="0.000344"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.526341" 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-10-20T23:19:57.525803" elapsed="0.000566"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.526523" elapsed="0.000144"/>
</kw>
<var name="${iteration}">81</var>
<status status="PASS" start="2026-10-20T23:19:57.524610" elapsed="0.002091"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.527083" elapsed="0.000144"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.526878" elapsed="0.000383"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.526864" elapsed="0.000421"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.527763" 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-10-20T23:19:57.527458" elapsed="0.000330"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.528578" 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-10-20T23:19:57.527969" 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-10-20T23:19:57.528759" elapsed="0.000163"/>
</kw>
<var name="${iteration}">82</var>
<status status="PASS" start="2026-10-20T23:19:57.526836" elapsed="0.002120"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.529340" elapsed="0.000147"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.529119" elapsed="0.000402"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.529105" elapsed="0.000440"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.530024" 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-10-20T23:19:57.529703" elapsed="0.000346"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.530737" 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-10-20T23:19:57.530214" elapsed="0.000550"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.530930" elapsed="0.000143"/>
</kw>
<var name="${iteration}">83</var>
<status status="PASS" start="2026-10-20T23:19:57.529078" elapsed="0.002029"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.531490" elapsed="0.000142"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.531270" elapsed="0.000396"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.531256" elapsed="0.000434"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.532162" 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-10-20T23:19:57.531857" elapsed="0.000329"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.532885" 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-10-20T23:19:57.532367" elapsed="0.000544"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.533064" elapsed="0.000143"/>
</kw>
<var name="${iteration}">84</var>
<status status="PASS" start="2026-10-20T23:19:57.531229" elapsed="0.002012"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.533623" elapsed="0.000143"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.533420" elapsed="0.000380"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.533406" elapsed="0.000432"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.534297" 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-10-20T23:19:57.533995" elapsed="0.000342"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.535020" 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-10-20T23:19:57.534504" elapsed="0.000543"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.535199" elapsed="0.000158"/>
</kw>
<var name="${iteration}">85</var>
<status status="PASS" start="2026-10-20T23:19:57.533378" elapsed="0.002013"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.535756" elapsed="0.000156"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.535552" elapsed="0.000425"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.535538" elapsed="0.000464"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.536485" 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-10-20T23:19:57.536161" elapsed="0.000349"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.537201" 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-10-20T23:19:57.536676" elapsed="0.000551"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.537396" elapsed="0.000144"/>
</kw>
<var name="${iteration}">86</var>
<status status="PASS" start="2026-10-20T23:19:57.535511" elapsed="0.002063"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.537953" elapsed="0.000142"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.537737" elapsed="0.000394"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.537723" elapsed="0.000432"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.538633" 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-10-20T23:19:57.538326" elapsed="0.000331"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.539360" 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-10-20T23:19:57.538836" elapsed="0.000551"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.539540" elapsed="0.000144"/>
</kw>
<var name="${iteration}">87</var>
<status status="PASS" start="2026-10-20T23:19:57.537696" elapsed="0.002022"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.540095" elapsed="0.000142"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.539892" elapsed="0.000380"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.539878" elapsed="0.000417"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.540771" 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-10-20T23:19:57.540468" elapsed="0.000327"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.541495" 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-10-20T23:19:57.540975" elapsed="0.000546"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.541674" elapsed="0.000160"/>
</kw>
<var name="${iteration}">88</var>
<status status="PASS" start="2026-10-20T23:19:57.539851" elapsed="0.002018"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.542236" elapsed="0.000254"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.542032" elapsed="0.000494"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.542018" elapsed="0.000532"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.543026" 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-10-20T23:19:57.542708" elapsed="0.000343"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.543750" 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-10-20T23:19:57.543217" elapsed="0.000560"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.543942" elapsed="0.000144"/>
</kw>
<var name="${iteration}">89</var>
<status status="PASS" start="2026-10-20T23:19:57.541991" elapsed="0.002129"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.544502" elapsed="0.000143"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.544282" elapsed="0.000398"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.544267" elapsed="0.000436"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.545173" 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-10-20T23:19:57.544871" elapsed="0.000327"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.545896" 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-10-20T23:19:57.545379" elapsed="0.000544"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.546105" elapsed="0.000145"/>
</kw>
<var name="${iteration}">90</var>
<status status="PASS" start="2026-10-20T23:19:57.544240" elapsed="0.002044"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.546667" elapsed="0.000176"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.546462" elapsed="0.000416"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.546448" elapsed="0.000454"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.547378" 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-10-20T23:19:57.547057" elapsed="0.000346"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.548088" 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-10-20T23:19:57.547570" elapsed="0.000545"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.548268" elapsed="0.000161"/>
</kw>
<var name="${iteration}">91</var>
<status status="PASS" start="2026-10-20T23:19:57.546421" elapsed="0.002041"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.548840" elapsed="0.000143"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.548625" elapsed="0.000393"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.548611" elapsed="0.000431"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.549524" 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-10-20T23:19:57.549198" elapsed="0.000351"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.550232" 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-10-20T23:19:57.549715" elapsed="0.000543"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.550428" elapsed="0.000144"/>
</kw>
<var name="${iteration}">92</var>
<status status="PASS" start="2026-10-20T23:19:57.548584" elapsed="0.002022"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.550987" elapsed="0.000144"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.550769" elapsed="0.000396"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.550754" elapsed="0.000436"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.551664" 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-10-20T23:19:57.551360" elapsed="0.000328"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.552385" 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-10-20T23:19:57.551869" elapsed="0.000542"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.552565" elapsed="0.000142"/>
</kw>
<var name="${iteration}">93</var>
<status status="PASS" start="2026-10-20T23:19:57.550728" elapsed="0.002013"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.553124" elapsed="0.000143"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.552918" elapsed="0.000384"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.552904" elapsed="0.000437"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.553802" 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-10-20T23:19:57.553500" elapsed="0.000340"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.554526" 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-10-20T23:19:57.554008" elapsed="0.000544"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.554705" elapsed="0.000157"/>
</kw>
<var name="${iteration}">94</var>
<status status="PASS" start="2026-10-20T23:19:57.552877" elapsed="0.002020"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.555262" elapsed="0.000162"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.555058" elapsed="0.000401"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.555043" elapsed="0.000439"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.555952" 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-10-20T23:19:57.555638" elapsed="0.000339"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.556661" 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-10-20T23:19:57.556143" elapsed="0.000578"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.556892" elapsed="0.000145"/>
</kw>
<var name="${iteration}">95</var>
<status status="PASS" start="2026-10-20T23:19:57.555016" elapsed="0.002055"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.557574" elapsed="0.000143"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.557360" elapsed="0.000392"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.557218" elapsed="0.000558"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.558252" 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-10-20T23:19:57.557946" elapsed="0.000330"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.558981" 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-10-20T23:19:57.558458" elapsed="0.000550"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.559163" elapsed="0.000158"/>
</kw>
<var name="${iteration}">96</var>
<status status="PASS" start="2026-10-20T23:19:57.557190" elapsed="0.002167"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.559722" elapsed="0.000157"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.559519" elapsed="0.000395"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.559505" elapsed="0.000432"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.560412" 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-10-20T23:19:57.560094" elapsed="0.000343"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.561118" 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-10-20T23:19:57.560603" elapsed="0.000542"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.561298" elapsed="0.000159"/>
</kw>
<var name="${iteration}">97</var>
<status status="PASS" start="2026-10-20T23:19:57.559477" elapsed="0.002013"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.561867" elapsed="0.000143"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.561650" elapsed="0.000395"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.561636" elapsed="0.000431"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.562539" 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-10-20T23:19:57.562221" elapsed="0.000342"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.563243" 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-10-20T23:19:57.562729" elapsed="0.000541"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.563437" elapsed="0.000143"/>
</kw>
<var name="${iteration}">98</var>
<status status="PASS" start="2026-10-20T23:19:57.561609" elapsed="0.002005"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.563989" elapsed="0.000142"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.563772" elapsed="0.000393"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.563758" elapsed="0.000430"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.564660" 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-10-20T23:19:57.564357" elapsed="0.000328"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.565380" 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-10-20T23:19:57.564865" elapsed="0.000541"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.565557" elapsed="0.000142"/>
</kw>
<var name="${iteration}">99</var>
<status status="PASS" start="2026-10-20T23:19:57.563731" elapsed="0.002002"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.566110" elapsed="0.000141"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.565907" elapsed="0.000379"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.565893" elapsed="0.000430"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.566780" 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-10-20T23:19:57.566479" elapsed="0.000324"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.567532" 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-10-20T23:19:57.567012" elapsed="0.000547"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.567712" elapsed="0.000157"/>
</kw>
<var name="${iteration}">100</var>
<status status="PASS" start="2026-10-20T23:19:57.565865" elapsed="0.002039"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="PASS" start="2026-10-20T23:19:57.310602" elapsed="0.257332"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.569099" 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>Concatenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-10-20T23:19:57.568095" elapsed="0.001030"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:19:57.569182" elapsed="0.000035"/>
</return>
<msg time="2026-10-20T23:19:57.569341" 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-10-20T23:19:57.281605" elapsed="0.287762"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:19:57.570575" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/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-10-20T23:19:57.570334" elapsed="0.000311">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/openflowplugin/add-group-1/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-10-20T23:19:57.570730" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:19:57.569990" elapsed="0.000762"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:57.571048" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:57.570829" elapsed="0.000271"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.571713" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:57.571326" elapsed="0.000411"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.571123" elapsed="0.000647"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.570798" elapsed="0.000992"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.572337" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:19:57.571969" elapsed="0.000392"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-20T23:19:57.572408" elapsed="0.000026"/>
</return>
<msg time="2026-10-20T23:19:57.572532" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/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-10-20T23:19:57.569658" elapsed="0.002896"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.573902" 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-10-20T23:19:57.573658" elapsed="0.000286"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.574359" 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-10-20T23:19:57.574131" elapsed="0.000757"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.575296" 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-10-20T23:19:57.575077" elapsed="0.000275"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.575751" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:57.575537" elapsed="0.000252"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-10-20T23:19:57.576541" 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-10-20T23:19:57.576352" elapsed="0.000212"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-10-20T23:19:57.576872" 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-10-20T23:19:57.576715" elapsed="0.000182"/>
</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-10-20T23:19:57.577057" elapsed="0.000149"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.577629" 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-10-20T23:19:57.577409" elapsed="0.000260"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-10-20T23:19:57.577707" elapsed="0.000027"/>
</return>
<msg time="2026-10-20T23:19:57.577848" 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-10-20T23:19:57.575982" elapsed="0.001889"/>
</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-10-20T23:19:57.583955" level="INFO">POST Request : url=http://10.30.170.223: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.34.2', '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-10-20T23:19:57.584138" level="INFO">POST Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:19:57.584241" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:19:57.578159" elapsed="0.006463">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1</status>
</kw>
<status status="FAIL" start="2026-10-20T23:19:57.577936" elapsed="0.006763">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1</status>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:57.584892" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:57.584730" elapsed="0.000229"/>
</branch>
<status status="FAIL" start="2026-10-20T23:19:57.577920" elapsed="0.007061">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:57.585325" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-20T23:19:57.585450" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:19:57.585417" elapsed="0.000072"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:19:57.585401" elapsed="0.000108"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:57.585645" elapsed="0.000020"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-20T23:19:57.585705" elapsed="0.000013"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="FAIL" start="2026-10-20T23:19:57.572861" elapsed="0.012939">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:19:57.585882" elapsed="0.000014"/>
</return>
<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="FAIL" start="2026-10-20T23:19:57.243961" elapsed="0.342006">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1</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=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-10-20T23:19:57.586223" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:57.586065" elapsed="0.000224"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:19:57.586050" elapsed="0.000275"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:19:57.586358" elapsed="0.000013"/>
</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="FAIL" start="2026-10-20T23:19:57.243299" elapsed="0.343147">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1</status>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-10-20T23:19:57.239114" elapsed="0.347391">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-10-20T23:19:57.238933" elapsed="0.347620">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1</status>
</for>
<doc>Add 100 groups of type 1 in every switch.</doc>
<status status="FAIL" start="2026-10-20T23:19:57.238592" elapsed="0.348102">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1</status>
</test>
<test id="s1-s5-s1-t2" name="Add Group 2 In Every Switch" line="35">
<for flavor="IN RANGE">
<iter>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.588151" 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-10-20T23:19:57.587774" elapsed="0.000403"/>
</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-10-20T23:19:57.601921" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-group-2.manganese/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:57.601601" elapsed="0.000346"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:19:57.602619" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/openflowplugin/add-group-2.manganese/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:19:57.602435" elapsed="0.000244">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/openflowplugin/add-group-2.manganese/location.uri' does not exist.</status>
</kw>
<msg time="2026-10-20T23:19:57.602763" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:19:57.602103" elapsed="0.000683"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.603286" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/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-10-20T23:19:57.602973" elapsed="0.000353"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-20T23:19:57.603604" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/openflowplugin/add-group-2/location.uri"&gt;/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/openflowplugin/add-group-2/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-10-20T23:19:57.603739" 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-10-20T23:19:57.603492" elapsed="0.000271"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.604187" 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-10-20T23:19:57.603967" elapsed="0.000262"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.605142" 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-10-20T23:19:57.604910" elapsed="0.000273"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.605623" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.605373" elapsed="0.000274"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.606298" 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-10-20T23:19:57.606026" elapsed="0.000313"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-10-20T23:19:57.607261" 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-10-20T23:19:57.606828" elapsed="0.000458"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-10-20T23:19:57.607356" elapsed="0.000028"/>
</return>
<msg time="2026-10-20T23:19:57.607484" 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-10-20T23:19:57.606507" elapsed="0.001000"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</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-10-20T23:19:57.607670" elapsed="0.000305"/>
</kw>
<var name="${key}">NODE</var>
<var name="${value}">openflow:1</var>
<status status="PASS" start="2026-10-20T23:19:57.605896" elapsed="0.002116"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-10-20T23:19:57.605690" elapsed="0.002355"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-20T23:19:57.608086" elapsed="0.000025"/>
</return>
<msg time="2026-10-20T23:19:57.608216" level="INFO">${mapping_to_use} = {'NODE': 'openflow%3A1'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-20T23:19:57.604558" elapsed="0.003682"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.604295" elapsed="0.003974"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:57.608459" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:57.608292" elapsed="0.000220"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.604278" elapsed="0.004253"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.609175" 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-10-20T23:19:57.608686" elapsed="0.000514"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:19:57.609244" elapsed="0.000026"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-group-2.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-group-2.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="PASS" start="2026-10-20T23:19:57.601080" elapsed="0.008286"/>
</kw>
<msg time="2026-10-20T23:19:57.609449" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:19:57.596898" elapsed="0.012596"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>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-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-group-2.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-group-2.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:57.613456" elapsed="0.000025"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>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-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-group-2.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-group-2.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:57.617409" elapsed="0.000024"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${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-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-group-2.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-group-2.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:57.621366" elapsed="0.000025"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:57.621546" elapsed="0.000019"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:57.621724" elapsed="0.000019"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:57.622079" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:57.621936" elapsed="0.000193"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:19:57.621921" elapsed="0.000230"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:57.622318" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:57.622496" elapsed="0.000018"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:57.622657" elapsed="0.000018"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-20T23:19:57.621894" elapsed="0.000810"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-20T23:19:57.621791" elapsed="0.000936"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Concatenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:57.622889" elapsed="0.000019"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-20T23:19:57.622957" elapsed="0.000014"/>
</return>
<msg time="2026-10-20T23:19:57.623060" 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-10-20T23:19:57.596279" elapsed="0.026804"/>
</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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:19:57.626778" elapsed="0.000310"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.631878" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-group-2.manganese/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 variable.</doc>
<status status="PASS" start="2026-10-20T23:19:57.631561" elapsed="0.000371"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:19:57.632594" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/openflowplugin/add-group-2.manganese/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-10-20T23:19:57.632423" elapsed="0.000229">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/openflowplugin/add-group-2.manganese/post_data.prolog.json' does not exist.</status>
</kw>
<msg time="2026-10-20T23:19:57.632734" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:19:57.632089" elapsed="0.000668"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.633248" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/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-10-20T23:19:57.632939" elapsed="0.000339"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-20T23:19:57.633566" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/openflowplugin/add-group-2/post_data.prolog.json"&gt;/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/openflowplugin/add-group-2/post_data.prolog.json&lt;/a&gt;'.</msg>
<msg time="2026-10-20T23:19:57.633683" 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-10-20T23:19:57.633456" elapsed="0.000251"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.634158" 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-10-20T23:19:57.633937" elapsed="0.000261"/>
</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-10-20T23:19:57.634517" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:57.634259" elapsed="0.000313"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.635016" 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 variable.</doc>
<status status="PASS" start="2026-10-20T23:19:57.634738" elapsed="0.000302"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.634595" elapsed="0.000478"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.634242" elapsed="0.000851"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.635637" 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-10-20T23:19:57.635250" elapsed="0.000412"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:19:57.635707" elapsed="0.000027"/>
</return>
<msg time="2026-10-20T23:19:57.635845" 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-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-group-2.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-group-2.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="PASS" start="2026-10-20T23:19:57.631050" elapsed="0.004819"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.640836" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-group-2.manganese/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 variable.</doc>
<status status="PASS" start="2026-10-20T23:19:57.640521" elapsed="0.000341"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:19:57.641516" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/openflowplugin/add-group-2.manganese/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-10-20T23:19:57.641345" elapsed="0.000229">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/openflowplugin/add-group-2.manganese/post_data.epilog.json' does not exist.</status>
</kw>
<msg time="2026-10-20T23:19:57.641656" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:19:57.641017" elapsed="0.000662"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.642167" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/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-10-20T23:19:57.641860" elapsed="0.000332"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-20T23:19:57.642484" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/openflowplugin/add-group-2/post_data.epilog.json"&gt;/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/openflowplugin/add-group-2/post_data.epilog.json&lt;/a&gt;'.</msg>
<msg time="2026-10-20T23:19:57.642602" 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-10-20T23:19:57.642376" elapsed="0.000276"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.643074" level="INFO">  ]
}
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:57.642856" elapsed="0.000259"/>
</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-10-20T23:19:57.643436" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:57.643175" elapsed="0.000315"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.643935" 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 variable.</doc>
<status status="PASS" start="2026-10-20T23:19:57.643657" elapsed="0.000302"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.643514" elapsed="0.000478"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.643158" elapsed="0.000854"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.644555" 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-10-20T23:19:57.644171" elapsed="0.000408"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:19:57.644623" elapsed="0.000027"/>
</return>
<msg time="2026-10-20T23:19:57.644746" 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-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-group-2.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-group-2.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="PASS" start="2026-10-20T23:19:57.640001" elapsed="0.004769"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.649520" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-group-2.manganese/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 variable.</doc>
<status status="PASS" start="2026-10-20T23:19:57.649197" elapsed="0.000348"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:19:57.650191" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/openflowplugin/add-group-2.manganese/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-10-20T23:19:57.650024" elapsed="0.000224">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/openflowplugin/add-group-2.manganese/data.item.json' does not exist.</status>
</kw>
<msg time="2026-10-20T23:19:57.650347" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:19:57.649699" elapsed="0.000671"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.650859" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/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-10-20T23:19:57.650538" elapsed="0.000347"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-20T23:19:57.651156" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/openflowplugin/add-group-2/data.item.json"&gt;/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/openflowplugin/add-group-2/data.item.json&lt;/a&gt;'.</msg>
<msg time="2026-10-20T23:19:57.651277" 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-10-20T23:19:57.651047" elapsed="0.000254"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.651727" 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-10-20T23:19:57.651508" elapsed="0.000262"/>
</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-10-20T23:19:57.652085" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:57.651843" elapsed="0.000295"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.652588" 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 variable.</doc>
<status status="PASS" start="2026-10-20T23:19:57.652325" elapsed="0.000287"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.652162" elapsed="0.000482"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.651826" elapsed="0.000838"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.653356" 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-10-20T23:19:57.652835" elapsed="0.000549"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:19:57.653465" elapsed="0.000028"/>
</return>
<msg time="2026-10-20T23:19:57.653594" 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-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-group-2.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-group-2.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-group-2/${file_name}.</doc>
<status status="PASS" start="2026-10-20T23:19:57.648727" elapsed="0.004891"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.654014" level="INFO">${items} = []</msg>
<var>${items}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:19:57.653771" elapsed="0.000267"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.654536" 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-10-20T23:19:57.654203" elapsed="0.000357"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:57.655085" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:57.654882" elapsed="0.000256"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.654867" elapsed="0.000293"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.655635" 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-10-20T23:19:57.655330" elapsed="0.000330"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.656502" 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-10-20T23:19:57.655841" 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-10-20T23:19:57.656685" elapsed="0.000162"/>
</kw>
<var name="${iteration}">1</var>
<status status="PASS" start="2026-10-20T23:19:57.654837" elapsed="0.002045"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.657247" elapsed="0.000161"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.657042" elapsed="0.000401"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.657027" elapsed="0.000439"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.657939" 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-10-20T23:19:57.657622" elapsed="0.000342"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.658644" 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-10-20T23:19:57.658131" elapsed="0.000539"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.658837" elapsed="0.000151"/>
</kw>
<var name="${iteration}">2</var>
<status status="PASS" start="2026-10-20T23:19:57.657000" elapsed="0.002022"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.659403" elapsed="0.000145"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.659182" elapsed="0.000400"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.659167" elapsed="0.000438"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.660079" 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-10-20T23:19:57.659762" elapsed="0.000341"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.660790" 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-10-20T23:19:57.660271" elapsed="0.000559"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.660985" elapsed="0.000144"/>
</kw>
<var name="${iteration}">3</var>
<status status="PASS" start="2026-10-20T23:19:57.659141" elapsed="0.002022"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.661549" elapsed="0.000143"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.661344" elapsed="0.000383"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.661328" elapsed="0.000421"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.662219" 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-10-20T23:19:57.661917" elapsed="0.000326"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.662934" 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-10-20T23:19:57.662425" elapsed="0.000565"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.663148" elapsed="0.000144"/>
</kw>
<var name="${iteration}">4</var>
<status status="PASS" start="2026-10-20T23:19:57.661287" elapsed="0.002054"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.663709" elapsed="0.000156"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.663505" elapsed="0.000395"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.663490" elapsed="0.000433"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.664403" 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-10-20T23:19:57.664080" elapsed="0.000348"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.665106" 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-10-20T23:19:57.664596" elapsed="0.000536"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.665286" elapsed="0.000162"/>
</kw>
<var name="${iteration}">5</var>
<status status="PASS" start="2026-10-20T23:19:57.663463" elapsed="0.002019"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.665862" elapsed="0.000144"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.665644" elapsed="0.000398"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.665630" elapsed="0.000435"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.666542" 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-10-20T23:19:57.666221" elapsed="0.000346"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.667249" 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-10-20T23:19:57.666733" elapsed="0.000543"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.667451" elapsed="0.000145"/>
</kw>
<var name="${iteration}">6</var>
<status status="PASS" start="2026-10-20T23:19:57.665602" elapsed="0.002027"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.668008" elapsed="0.000144"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.667790" elapsed="0.000397"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.667776" elapsed="0.000434"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.668684" 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-10-20T23:19:57.668381" elapsed="0.000327"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.669404" 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-10-20T23:19:57.668889" elapsed="0.000542"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.669585" elapsed="0.000143"/>
</kw>
<var name="${iteration}">7</var>
<status status="PASS" start="2026-10-20T23:19:57.667749" elapsed="0.002013"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.670142" elapsed="0.000144"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.669939" elapsed="0.000397"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.669925" elapsed="0.000435"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.670938" 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-10-20T23:19:57.670517" elapsed="0.000446"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.671653" 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-10-20T23:19:57.671132" elapsed="0.000548"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.671848" elapsed="0.000145"/>
</kw>
<var name="${iteration}">8</var>
<status status="PASS" start="2026-10-20T23:19:57.669897" elapsed="0.002131"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.672408" elapsed="0.000145"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.672189" elapsed="0.000398"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.672175" elapsed="0.000435"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.673087" 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-10-20T23:19:57.672766" elapsed="0.000346"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.673843" 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-10-20T23:19:57.673325" elapsed="0.000545"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.674023" elapsed="0.000143"/>
</kw>
<var name="${iteration}">9</var>
<status status="PASS" start="2026-10-20T23:19:57.672148" elapsed="0.002051"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.674581" elapsed="0.000143"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.674377" elapsed="0.000381"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.674363" elapsed="0.000418"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.675254" 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-10-20T23:19:57.674952" elapsed="0.000326"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.675975" 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-10-20T23:19:57.675462" elapsed="0.000540"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.676155" elapsed="0.000142"/>
</kw>
<var name="${iteration}">10</var>
<status status="PASS" start="2026-10-20T23:19:57.674334" elapsed="0.002013"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.676714" elapsed="0.000158"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.676511" elapsed="0.000395"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.676497" elapsed="0.000432"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.677406" 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-10-20T23:19:57.677085" elapsed="0.000345"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.678106" 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-10-20T23:19:57.677597" elapsed="0.000535"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.678287" elapsed="0.000160"/>
</kw>
<var name="${iteration}">11</var>
<status status="PASS" start="2026-10-20T23:19:57.676469" elapsed="0.002011"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.678860" elapsed="0.000143"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.678641" elapsed="0.000395"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.678626" elapsed="0.000433"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.679533" 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-10-20T23:19:57.679215" elapsed="0.000343"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.680236" 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-10-20T23:19:57.679722" elapsed="0.000540"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.680429" elapsed="0.000143"/>
</kw>
<var name="${iteration}">12</var>
<status status="PASS" start="2026-10-20T23:19:57.678600" elapsed="0.002005"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.680984" elapsed="0.000142"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.680765" elapsed="0.000396"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.680751" elapsed="0.000434"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.681660" 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-10-20T23:19:57.681356" elapsed="0.000328"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.682376" 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-10-20T23:19:57.681864" elapsed="0.000539"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.682556" elapsed="0.000143"/>
</kw>
<var name="${iteration}">13</var>
<status status="PASS" start="2026-10-20T23:19:57.680724" elapsed="0.002009"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.683114" elapsed="0.000142"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.682910" elapsed="0.000427"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.682895" elapsed="0.000467"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.683844" 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-10-20T23:19:57.683521" elapsed="0.000348"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.684555" 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-10-20T23:19:57.684036" elapsed="0.000546"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.684736" elapsed="0.000328"/>
</kw>
<var name="${iteration}">14</var>
<status status="PASS" start="2026-10-20T23:19:57.682868" 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-10-20T23:19:57.685483" elapsed="0.000241"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.685261" elapsed="0.000498"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.685247" elapsed="0.000536"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.686261" 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-10-20T23:19:57.685955" elapsed="0.000330"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.686996" 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-10-20T23:19:57.686478" elapsed="0.000544"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.687177" elapsed="0.000160"/>
</kw>
<var name="${iteration}">15</var>
<status status="PASS" start="2026-10-20T23:19:57.685220" elapsed="0.002151"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.687737" elapsed="0.000160"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.687534" elapsed="0.000397"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.687520" elapsed="0.000434"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.688429" 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-10-20T23:19:57.688110" elapsed="0.000343"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.689128" 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-10-20T23:19:57.688619" elapsed="0.000535"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.689322" elapsed="0.000150"/>
</kw>
<var name="${iteration}">16</var>
<status status="PASS" start="2026-10-20T23:19:57.687493" elapsed="0.002013"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.689885" elapsed="0.000143"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.689668" elapsed="0.000394"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.689654" elapsed="0.000431"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.690560" 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-10-20T23:19:57.690240" elapsed="0.000344"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.691260" 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-10-20T23:19:57.690750" elapsed="0.000536"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.691453" elapsed="0.000144"/>
</kw>
<var name="${iteration}">17</var>
<status status="PASS" start="2026-10-20T23:19:57.689626" elapsed="0.002005"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.692011" elapsed="0.000142"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.691791" elapsed="0.000396"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.691777" elapsed="0.000433"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.692684" 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-10-20T23:19:57.692381" elapsed="0.000327"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.693401" 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-10-20T23:19:57.692886" elapsed="0.000541"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.693612" elapsed="0.000145"/>
</kw>
<var name="${iteration}">18</var>
<status status="PASS" start="2026-10-20T23:19:57.691751" elapsed="0.002040"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.694175" elapsed="0.000161"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.693970" elapsed="0.000402"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.693955" elapsed="0.000441"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.694924" 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-10-20T23:19:57.694554" elapsed="0.000396"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.695645" 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-10-20T23:19:57.695118" elapsed="0.000554"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.695840" elapsed="0.000147"/>
</kw>
<var name="${iteration}">19</var>
<status status="PASS" start="2026-10-20T23:19:57.693928" elapsed="0.002094"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.696414" elapsed="0.000145"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.696193" elapsed="0.000402"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.696178" elapsed="0.000441"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.697096" 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-10-20T23:19:57.696776" elapsed="0.000345"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.697799" 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-10-20T23:19:57.697287" elapsed="0.000553"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.697993" elapsed="0.000142"/>
</kw>
<var name="${iteration}">20</var>
<status status="PASS" start="2026-10-20T23:19:57.696150" elapsed="0.002020"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.698555" elapsed="0.000144"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.698349" elapsed="0.000384"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.698334" elapsed="0.000424"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.699232" 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-10-20T23:19:57.698927" elapsed="0.000329"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.699964" 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-10-20T23:19:57.699448" elapsed="0.000543"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.700146" elapsed="0.000145"/>
</kw>
<var name="${iteration}">21</var>
<status status="PASS" start="2026-10-20T23:19:57.698292" elapsed="0.002047"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.700833" elapsed="0.000145"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.700606" elapsed="0.000406"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.700489" elapsed="0.000547"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.701515" 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-10-20T23:19:57.701193" elapsed="0.000346"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.702223" 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-10-20T23:19:57.701707" elapsed="0.000543"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.702418" elapsed="0.000145"/>
</kw>
<var name="${iteration}">22</var>
<status status="PASS" start="2026-10-20T23:19:57.700462" elapsed="0.002135"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.702982" elapsed="0.000147"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.702760" elapsed="0.000403"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.702744" elapsed="0.000442"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.703659" 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-10-20T23:19:57.703356" elapsed="0.000328"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.704379" 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-10-20T23:19:57.703868" elapsed="0.000578"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.704603" elapsed="0.000145"/>
</kw>
<var name="${iteration}">23</var>
<status status="PASS" start="2026-10-20T23:19:57.702718" elapsed="0.002064"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.705163" elapsed="0.000158"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.704959" elapsed="0.000398"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.704945" elapsed="0.000435"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.705859" 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-10-20T23:19:57.705537" elapsed="0.000347"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.706569" 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-10-20T23:19:57.706051" elapsed="0.000544"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.706749" elapsed="0.000160"/>
</kw>
<var name="${iteration}">24</var>
<status status="PASS" start="2026-10-20T23:19:57.704918" elapsed="0.002025"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.707320" elapsed="0.000145"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.707104" elapsed="0.000397"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.707089" elapsed="0.000434"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.708002" 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-10-20T23:19:57.707680" elapsed="0.000346"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.708708" 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-10-20T23:19:57.708194" elapsed="0.000541"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.708909" elapsed="0.000145"/>
</kw>
<var name="${iteration}">25</var>
<status status="PASS" start="2026-10-20T23:19:57.707063" elapsed="0.002025"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.709469" elapsed="0.000143"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.709249" elapsed="0.000399"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.709235" elapsed="0.000436"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.710178" 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-10-20T23:19:57.709874" elapsed="0.000328"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.710902" 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-10-20T23:19:57.710383" elapsed="0.000545"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.711081" elapsed="0.000143"/>
</kw>
<var name="${iteration}">26</var>
<status status="PASS" start="2026-10-20T23:19:57.709208" elapsed="0.002051"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.711639" elapsed="0.000143"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.711435" elapsed="0.000399"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.711421" elapsed="0.000437"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.712334" 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-10-20T23:19:57.712018" elapsed="0.000343"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.713036" 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-10-20T23:19:57.712525" elapsed="0.000537"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.713215" elapsed="0.000159"/>
</kw>
<var name="${iteration}">27</var>
<status status="PASS" start="2026-10-20T23:19:57.711394" elapsed="0.002015"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.713774" elapsed="0.000158"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.713571" elapsed="0.000396"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.713556" elapsed="0.000434"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.714466" 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-10-20T23:19:57.714147" elapsed="0.000343"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.715212" 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-10-20T23:19:57.714691" elapsed="0.000548"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.715411" elapsed="0.000145"/>
</kw>
<var name="${iteration}">28</var>
<status status="PASS" start="2026-10-20T23:19:57.713529" elapsed="0.002062"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.716721" elapsed="0.000169"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.716513" elapsed="0.000413"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.716499" elapsed="0.000450"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.717430" 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-10-20T23:19:57.717106" elapsed="0.000349"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.718137" 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-10-20T23:19:57.717622" elapsed="0.000542"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.718334" elapsed="0.000148"/>
</kw>
<var name="${iteration}">29</var>
<status status="PASS" start="2026-10-20T23:19:57.716470" elapsed="0.002047"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.718897" elapsed="0.000145"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.718676" elapsed="0.000401"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.718661" elapsed="0.000439"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.719590" 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-10-20T23:19:57.719256" elapsed="0.000359"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.720296" 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-10-20T23:19:57.719781" elapsed="0.000557"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.720495" elapsed="0.000144"/>
</kw>
<var name="${iteration}">30</var>
<status status="PASS" start="2026-10-20T23:19:57.718635" elapsed="0.002038"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.721059" elapsed="0.000141"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.720849" elapsed="0.000385"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.720834" elapsed="0.000423"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.721730" 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-10-20T23:19:57.721429" elapsed="0.000326"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.722471" 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-10-20T23:19:57.721955" elapsed="0.000543"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.722651" elapsed="0.000142"/>
</kw>
<var name="${iteration}">31</var>
<status status="PASS" start="2026-10-20T23:19:57.720791" elapsed="0.002049"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.723205" elapsed="0.000158"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.723002" elapsed="0.000397"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.722988" elapsed="0.000434"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.723896" 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-10-20T23:19:57.723579" elapsed="0.000341"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.724605" 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-10-20T23:19:57.724085" elapsed="0.000546"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.724785" elapsed="0.000160"/>
</kw>
<var name="${iteration}">32</var>
<status status="PASS" start="2026-10-20T23:19:57.722961" elapsed="0.002017"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.725357" elapsed="0.000144"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.725139" elapsed="0.000428"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.725125" elapsed="0.000466"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.726075" 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-10-20T23:19:57.725748" elapsed="0.000351"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.726782" 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-10-20T23:19:57.726265" elapsed="0.000558"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.726979" elapsed="0.000144"/>
</kw>
<var name="${iteration}">33</var>
<status status="PASS" start="2026-10-20T23:19:57.725098" elapsed="0.002058"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.727542" elapsed="0.000143"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.727338" elapsed="0.000382"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.727322" elapsed="0.000422"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.728222" 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-10-20T23:19:57.727916" elapsed="0.000331"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.728956" 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-10-20T23:19:57.728430" elapsed="0.000553"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.729136" elapsed="0.000142"/>
</kw>
<var name="${iteration}">34</var>
<status status="PASS" start="2026-10-20T23:19:57.727280" elapsed="0.002047"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.729695" elapsed="0.000157"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.729491" elapsed="0.000395"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.729477" elapsed="0.000432"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.730385" 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-10-20T23:19:57.730066" elapsed="0.000343"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.731189" 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-10-20T23:19:57.730575" 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-10-20T23:19:57.731389" elapsed="0.000152"/>
</kw>
<var name="${iteration}">35</var>
<status status="PASS" start="2026-10-20T23:19:57.729450" elapsed="0.002125"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.731956" elapsed="0.000143"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.731737" elapsed="0.000396"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.731723" elapsed="0.000433"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.732632" 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-10-20T23:19:57.732326" elapsed="0.000329"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.733350" 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-10-20T23:19:57.732835" elapsed="0.000542"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.733531" elapsed="0.000145"/>
</kw>
<var name="${iteration}">36</var>
<status status="PASS" start="2026-10-20T23:19:57.731695" elapsed="0.002015"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.734093" elapsed="0.000144"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.733889" elapsed="0.000383"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.733875" elapsed="0.000420"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.734771" 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-10-20T23:19:57.734468" elapsed="0.000327"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.735494" 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-10-20T23:19:57.734978" elapsed="0.000542"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.735705" elapsed="0.000160"/>
</kw>
<var name="${iteration}">37</var>
<status status="PASS" start="2026-10-20T23:19:57.733847" elapsed="0.002053"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.736268" elapsed="0.000160"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.736064" elapsed="0.000400"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.736049" elapsed="0.000438"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.736961" 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-10-20T23:19:57.736644" elapsed="0.000341"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.737666" 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-10-20T23:19:57.737152" elapsed="0.000540"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.737864" elapsed="0.000144"/>
</kw>
<var name="${iteration}">38</var>
<status status="PASS" start="2026-10-20T23:19:57.736022" elapsed="0.002020"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.738425" elapsed="0.000145"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.738205" elapsed="0.000400"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.738191" elapsed="0.000438"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.739102" 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-10-20T23:19:57.738786" elapsed="0.000340"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.739805" 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-10-20T23:19:57.739292" elapsed="0.000554"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.740000" elapsed="0.000144"/>
</kw>
<var name="${iteration}">39</var>
<status status="PASS" start="2026-10-20T23:19:57.738164" elapsed="0.002014"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.740562" elapsed="0.000143"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.740357" elapsed="0.000382"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.740342" elapsed="0.000421"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.741237" 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-10-20T23:19:57.740936" elapsed="0.000325"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.741953" 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-10-20T23:19:57.741441" elapsed="0.000539"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.742134" elapsed="0.000141"/>
</kw>
<var name="${iteration}">40</var>
<status status="PASS" start="2026-10-20T23:19:57.740299" elapsed="0.002024"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.742694" elapsed="0.000157"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.742488" elapsed="0.000398"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.742474" elapsed="0.000435"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.743384" 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-10-20T23:19:57.743065" elapsed="0.000344"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.744088" 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-10-20T23:19:57.743576" elapsed="0.000538"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.744267" elapsed="0.000160"/>
</kw>
<var name="${iteration}">41</var>
<status status="PASS" start="2026-10-20T23:19:57.742447" elapsed="0.002013"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.744841" elapsed="0.000144"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.744622" elapsed="0.000397"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.744607" elapsed="0.000436"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.745624" 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-10-20T23:19:57.745199" elapsed="0.000450"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.746347" 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-10-20T23:19:57.745828" elapsed="0.000573"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.746559" elapsed="0.000180"/>
</kw>
<var name="${iteration}">42</var>
<status status="PASS" start="2026-10-20T23:19:57.744581" 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-10-20T23:19:57.747163" elapsed="0.000198"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.746957" elapsed="0.000440"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.746943" elapsed="0.000477"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.747898" 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-10-20T23:19:57.747577" elapsed="0.000346"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.748600" 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-10-20T23:19:57.748088" elapsed="0.000538"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.748779" elapsed="0.000160"/>
</kw>
<var name="${iteration}">43</var>
<status status="PASS" start="2026-10-20T23:19:57.746916" elapsed="0.002057"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.749353" elapsed="0.000152"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.749135" elapsed="0.000405"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.749121" elapsed="0.000442"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.750062" 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-10-20T23:19:57.749738" elapsed="0.000348"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.750767" 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-10-20T23:19:57.750252" elapsed="0.000542"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.750964" elapsed="0.000143"/>
</kw>
<var name="${iteration}">44</var>
<status status="PASS" start="2026-10-20T23:19:57.749094" elapsed="0.002046"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.751521" elapsed="0.000142"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.751302" elapsed="0.000396"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.751288" elapsed="0.000433"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.752195" 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-10-20T23:19:57.751894" elapsed="0.000325"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.752924" 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-10-20T23:19:57.752404" elapsed="0.000546"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.753102" elapsed="0.000142"/>
</kw>
<var name="${iteration}">45</var>
<status status="PASS" start="2026-10-20T23:19:57.751261" elapsed="0.002022"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.753664" elapsed="0.000142"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.753461" elapsed="0.000394"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.753447" elapsed="0.000431"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.754350" 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-10-20T23:19:57.754033" elapsed="0.000343"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.755052" 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-10-20T23:19:57.754541" elapsed="0.000538"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.755230" elapsed="0.000160"/>
</kw>
<var name="${iteration}">46</var>
<status status="PASS" start="2026-10-20T23:19:57.753420" elapsed="0.002004"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.755788" elapsed="0.000156"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.755584" elapsed="0.000395"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.755569" elapsed="0.000434"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.756482" 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-10-20T23:19:57.756159" elapsed="0.000348"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.757223" 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-10-20T23:19:57.756706" elapsed="0.000543"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.757418" elapsed="0.000145"/>
</kw>
<var name="${iteration}">47</var>
<status status="PASS" start="2026-10-20T23:19:57.755542" elapsed="0.002056"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.757982" elapsed="0.000145"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.757759" elapsed="0.000404"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.757745" elapsed="0.000441"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.758678" 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-10-20T23:19:57.758374" elapsed="0.000329"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.759402" 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-10-20T23:19:57.758887" elapsed="0.000542"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.759583" elapsed="0.000142"/>
</kw>
<var name="${iteration}">48</var>
<status status="PASS" start="2026-10-20T23:19:57.757718" elapsed="0.002044"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.760145" elapsed="0.000259"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.759941" elapsed="0.000498"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.759927" elapsed="0.000535"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.760938" 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-10-20T23:19:57.760619" elapsed="0.000343"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.761642" 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-10-20T23:19:57.761128" elapsed="0.000540"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.761835" elapsed="0.000145"/>
</kw>
<var name="${iteration}">49</var>
<status status="PASS" start="2026-10-20T23:19:57.759900" elapsed="0.002114"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.762394" elapsed="0.000144"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.762176" elapsed="0.000397"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.762162" elapsed="0.000435"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.763071" 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-10-20T23:19:57.762752" elapsed="0.000344"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.763775" 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-10-20T23:19:57.763261" elapsed="0.000540"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.763971" elapsed="0.000144"/>
</kw>
<var name="${iteration}">50</var>
<status status="PASS" start="2026-10-20T23:19:57.762135" elapsed="0.002013"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.764540" elapsed="0.000144"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.764325" elapsed="0.000394"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.764295" elapsed="0.000447"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.765213" 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-10-20T23:19:57.764911" elapsed="0.000326"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.765929" 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-10-20T23:19:57.765417" elapsed="0.000538"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.766109" elapsed="0.000142"/>
</kw>
<var name="${iteration}">51</var>
<status status="PASS" start="2026-10-20T23:19:57.764269" elapsed="0.002016"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.766666" elapsed="0.000158"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.766463" elapsed="0.000431"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.766449" elapsed="0.000470"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.767399" 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-10-20T23:19:57.767076" elapsed="0.000347"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.768101" 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-10-20T23:19:57.767590" elapsed="0.000538"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.768281" elapsed="0.000159"/>
</kw>
<var name="${iteration}">52</var>
<status status="PASS" start="2026-10-20T23:19:57.766422" elapsed="0.002052"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.768851" elapsed="0.000145"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.768634" elapsed="0.000397"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.768620" elapsed="0.000434"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.769534" 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-10-20T23:19:57.769210" elapsed="0.000348"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.770238" 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-10-20T23:19:57.769724" elapsed="0.000540"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.770433" elapsed="0.000143"/>
</kw>
<var name="${iteration}">53</var>
<status status="PASS" start="2026-10-20T23:19:57.768594" elapsed="0.002016"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.770993" elapsed="0.000143"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.770772" elapsed="0.000399"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.770758" elapsed="0.000436"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.771673" 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-10-20T23:19:57.771368" elapsed="0.000330"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.772400" 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-10-20T23:19:57.771883" elapsed="0.000544"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.772580" elapsed="0.000142"/>
</kw>
<var name="${iteration}">54</var>
<status status="PASS" start="2026-10-20T23:19:57.770731" elapsed="0.002025"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.773136" elapsed="0.000144"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.772933" elapsed="0.000397"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.772919" elapsed="0.000436"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.773832" 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-10-20T23:19:57.773513" elapsed="0.000345"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.774547" 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-10-20T23:19:57.774026" elapsed="0.000547"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.774726" elapsed="0.000159"/>
</kw>
<var name="${iteration}">55</var>
<status status="PASS" start="2026-10-20T23:19:57.772891" elapsed="0.002028"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.775398" elapsed="0.000145"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.775175" elapsed="0.000403"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.775065" elapsed="0.000536"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.776076" 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-10-20T23:19:57.775758" elapsed="0.000342"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.776784" 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-10-20T23:19:57.776268" elapsed="0.000542"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.777011" elapsed="0.000145"/>
</kw>
<var name="${iteration}">56</var>
<status status="PASS" start="2026-10-20T23:19:57.775038" elapsed="0.002152"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.777574" elapsed="0.000142"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.777368" elapsed="0.000382"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.777354" elapsed="0.000418"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.778246" 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-10-20T23:19:57.777942" elapsed="0.000328"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.778965" 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-10-20T23:19:57.778452" elapsed="0.000539"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.779144" elapsed="0.000143"/>
</kw>
<var name="${iteration}">57</var>
<status status="PASS" start="2026-10-20T23:19:57.777325" elapsed="0.002010"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.779701" elapsed="0.000157"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.779499" elapsed="0.000394"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.779485" elapsed="0.000431"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.780392" 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-10-20T23:19:57.780073" elapsed="0.000344"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.781096" 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-10-20T23:19:57.780582" elapsed="0.000540"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.781275" elapsed="0.000160"/>
</kw>
<var name="${iteration}">58</var>
<status status="PASS" start="2026-10-20T23:19:57.779458" elapsed="0.002011"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.781847" elapsed="0.000143"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.781630" elapsed="0.000395"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.781616" elapsed="0.000432"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.782523" 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-10-20T23:19:57.782204" elapsed="0.000343"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.783221" 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-10-20T23:19:57.782711" elapsed="0.000537"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.783417" elapsed="0.000144"/>
</kw>
<var name="${iteration}">59</var>
<status status="PASS" start="2026-10-20T23:19:57.781589" elapsed="0.002005"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.783975" elapsed="0.000143"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.783754" elapsed="0.000398"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.783740" elapsed="0.000436"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.784649" 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-10-20T23:19:57.784346" elapsed="0.000328"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.785364" 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-10-20T23:19:57.784851" elapsed="0.000540"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.785550" elapsed="0.000142"/>
</kw>
<var name="${iteration}">60</var>
<status status="PASS" start="2026-10-20T23:19:57.783714" elapsed="0.002013"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.786108" elapsed="0.000143"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.785904" elapsed="0.000381"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.785889" elapsed="0.000434"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.786785" 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-10-20T23:19:57.786483" elapsed="0.000326"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.787507" 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-10-20T23:19:57.786992" elapsed="0.000572"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.787721" elapsed="0.000159"/>
</kw>
<var name="${iteration}">61</var>
<status status="PASS" start="2026-10-20T23:19:57.785861" elapsed="0.002054"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.788282" elapsed="0.000162"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.788076" elapsed="0.000403"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.788062" elapsed="0.000440"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.788978" 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-10-20T23:19:57.788659" elapsed="0.000343"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.789687" 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-10-20T23:19:57.789168" elapsed="0.000545"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.789883" elapsed="0.000144"/>
</kw>
<var name="${iteration}">62</var>
<status status="PASS" start="2026-10-20T23:19:57.788036" elapsed="0.002025"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.790542" elapsed="0.000144"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.790335" elapsed="0.000386"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.790305" elapsed="0.000440"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.791238" 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-10-20T23:19:57.790933" elapsed="0.000330"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.791966" 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-10-20T23:19:57.791447" elapsed="0.000545"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.792145" elapsed="0.000144"/>
</kw>
<var name="${iteration}">63</var>
<status status="PASS" start="2026-10-20T23:19:57.790277" elapsed="0.002061"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.792705" elapsed="0.000157"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.792501" elapsed="0.000396"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.792487" elapsed="0.000433"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.793395" 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-10-20T23:19:57.793076" elapsed="0.000343"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.794097" 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-10-20T23:19:57.793585" elapsed="0.000538"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.794276" elapsed="0.000160"/>
</kw>
<var name="${iteration}">64</var>
<status status="PASS" start="2026-10-20T23:19:57.792460" elapsed="0.002011"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.794848" elapsed="0.000143"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.794631" elapsed="0.000394"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.794617" elapsed="0.000431"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.795523" 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-10-20T23:19:57.795205" elapsed="0.000342"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.796228" 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-10-20T23:19:57.795714" elapsed="0.000540"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.796422" elapsed="0.000144"/>
</kw>
<var name="${iteration}">65</var>
<status status="PASS" start="2026-10-20T23:19:57.794590" elapsed="0.002010"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.796981" elapsed="0.000142"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.796762" elapsed="0.000395"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.796747" elapsed="0.000434"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.797659" 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-10-20T23:19:57.797356" elapsed="0.000327"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.798418" 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-10-20T23:19:57.797899" elapsed="0.000546"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.798600" elapsed="0.000142"/>
</kw>
<var name="${iteration}">66</var>
<status status="PASS" start="2026-10-20T23:19:57.796720" elapsed="0.002056"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.799158" elapsed="0.000141"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.798955" elapsed="0.000395"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.798941" elapsed="0.000433"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.799856" 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-10-20T23:19:57.799537" elapsed="0.000344"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.800560" 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-10-20T23:19:57.800048" elapsed="0.000539"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.800740" elapsed="0.000158"/>
</kw>
<var name="${iteration}">67</var>
<status status="PASS" start="2026-10-20T23:19:57.798914" elapsed="0.002019"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.801298" elapsed="0.000159"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.801093" elapsed="0.000400"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.801079" elapsed="0.000437"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.801992" 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-10-20T23:19:57.801674" elapsed="0.000342"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.802697" 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-10-20T23:19:57.802183" elapsed="0.000540"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.802889" elapsed="0.000142"/>
</kw>
<var name="${iteration}">68</var>
<status status="PASS" start="2026-10-20T23:19:57.801052" elapsed="0.002013"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.803448" elapsed="0.000144"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.803226" elapsed="0.000401"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.803212" elapsed="0.000439"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.804123" 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-10-20T23:19:57.803808" elapsed="0.000340"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.804946" 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-10-20T23:19:57.804330" 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-10-20T23:19:57.805128" elapsed="0.000143"/>
</kw>
<var name="${iteration}">69</var>
<status status="PASS" start="2026-10-20T23:19:57.803185" elapsed="0.002120"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.805684" elapsed="0.000157"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.805481" elapsed="0.000396"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.805467" elapsed="0.000433"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.806375" 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-10-20T23:19:57.806056" elapsed="0.000343"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.807077" 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-10-20T23:19:57.806566" elapsed="0.000538"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.807258" elapsed="0.000159"/>
</kw>
<var name="${iteration}">70</var>
<status status="PASS" start="2026-10-20T23:19:57.805440" elapsed="0.002012"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.807828" elapsed="0.000145"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.807612" elapsed="0.000427"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.807598" elapsed="0.000466"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.808545" 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-10-20T23:19:57.808223" elapsed="0.000346"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.809254" 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-10-20T23:19:57.808736" elapsed="0.000544"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.809449" elapsed="0.000143"/>
</kw>
<var name="${iteration}">71</var>
<status status="PASS" start="2026-10-20T23:19:57.807571" elapsed="0.002056"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.810008" elapsed="0.000144"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.809788" elapsed="0.000399"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.809774" elapsed="0.000436"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.810687" 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-10-20T23:19:57.810382" elapsed="0.000329"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.811405" 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-10-20T23:19:57.810892" elapsed="0.000539"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.811585" elapsed="0.000143"/>
</kw>
<var name="${iteration}">72</var>
<status status="PASS" start="2026-10-20T23:19:57.809747" elapsed="0.002015"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.812141" elapsed="0.000142"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.811937" elapsed="0.000395"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.811923" elapsed="0.000433"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.812833" 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-10-20T23:19:57.812515" elapsed="0.000344"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.813554" 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-10-20T23:19:57.813025" elapsed="0.000555"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.813733" elapsed="0.000170"/>
</kw>
<var name="${iteration}">73</var>
<status status="PASS" start="2026-10-20T23:19:57.811896" elapsed="0.002041"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.814321" elapsed="0.000146"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.814102" elapsed="0.000399"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.814086" elapsed="0.000438"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.814995" 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-10-20T23:19:57.814681" elapsed="0.000338"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.815697" 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-10-20T23:19:57.815186" elapsed="0.000537"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.815888" elapsed="0.000143"/>
</kw>
<var name="${iteration}">74</var>
<status status="PASS" start="2026-10-20T23:19:57.814058" elapsed="0.002007"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.816453" elapsed="0.000143"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.816227" elapsed="0.000404"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.816212" elapsed="0.000442"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.817131" 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-10-20T23:19:57.816826" elapsed="0.000329"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.817852" 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-10-20T23:19:57.817337" elapsed="0.000542"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.818068" elapsed="0.000146"/>
</kw>
<var name="${iteration}">75</var>
<status status="PASS" start="2026-10-20T23:19:57.816185" elapsed="0.002064"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.818646" elapsed="0.000144"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.818439" elapsed="0.000400"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.818418" elapsed="0.000445"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.819447" 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-10-20T23:19:57.819022" elapsed="0.000449"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.820157" 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-10-20T23:19:57.819639" elapsed="0.000544"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.820351" elapsed="0.000145"/>
</kw>
<var name="${iteration}">76</var>
<status status="PASS" start="2026-10-20T23:19:57.818391" elapsed="0.002139"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.820913" elapsed="0.000145"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.820692" elapsed="0.000400"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.820678" elapsed="0.000437"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.821591" 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-10-20T23:19:57.821271" elapsed="0.000345"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.822293" 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-10-20T23:19:57.821781" elapsed="0.000554"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.822489" elapsed="0.000142"/>
</kw>
<var name="${iteration}">77</var>
<status status="PASS" start="2026-10-20T23:19:57.820651" elapsed="0.002014"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.823041" elapsed="0.000142"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.822838" elapsed="0.000379"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.822811" elapsed="0.000430"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.823715" 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-10-20T23:19:57.823411" elapsed="0.000328"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.824433" 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-10-20T23:19:57.823919" elapsed="0.000540"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.824611" elapsed="0.000142"/>
</kw>
<var name="${iteration}">78</var>
<status status="PASS" start="2026-10-20T23:19:57.822784" elapsed="0.002002"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.825168" elapsed="0.000158"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.824963" elapsed="0.000398"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.824949" elapsed="0.000435"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.825861" 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-10-20T23:19:57.825543" elapsed="0.000343"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.826574" 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-10-20T23:19:57.826058" elapsed="0.000542"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.826751" elapsed="0.000159"/>
</kw>
<var name="${iteration}">79</var>
<status status="PASS" start="2026-10-20T23:19:57.824922" elapsed="0.002021"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.827327" elapsed="0.000145"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.827107" elapsed="0.000399"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.827091" elapsed="0.000439"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.828006" 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-10-20T23:19:57.827688" elapsed="0.000342"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.828715" 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-10-20T23:19:57.828196" elapsed="0.000574"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.828942" elapsed="0.000144"/>
</kw>
<var name="${iteration}">80</var>
<status status="PASS" start="2026-10-20T23:19:57.827063" elapsed="0.002057"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.829502" elapsed="0.000143"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.829282" elapsed="0.000398"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.829267" elapsed="0.000436"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.830180" 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-10-20T23:19:57.829875" elapsed="0.000329"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.830901" 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-10-20T23:19:57.830384" elapsed="0.000544"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.831081" elapsed="0.000144"/>
</kw>
<var name="${iteration}">81</var>
<status status="PASS" start="2026-10-20T23:19:57.829241" elapsed="0.002018"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.831643" elapsed="0.000143"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.831439" elapsed="0.000397"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.831425" elapsed="0.000435"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.832338" 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-10-20T23:19:57.832018" elapsed="0.000346"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.833045" 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-10-20T23:19:57.832531" elapsed="0.000540"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.833225" elapsed="0.000159"/>
</kw>
<var name="${iteration}">82</var>
<status status="PASS" start="2026-10-20T23:19:57.831398" elapsed="0.002020"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.833784" elapsed="0.000263"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.833581" elapsed="0.000502"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.833567" elapsed="0.000539"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.834585" 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-10-20T23:19:57.834263" elapsed="0.000346"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.835295" 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-10-20T23:19:57.834775" elapsed="0.000562"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.835490" elapsed="0.000144"/>
</kw>
<var name="${iteration}">83</var>
<status status="PASS" start="2026-10-20T23:19:57.833540" elapsed="0.002128"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.836048" elapsed="0.000143"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.835844" elapsed="0.000382"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.835829" elapsed="0.000419"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.836722" 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-10-20T23:19:57.836419" elapsed="0.000328"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.837440" 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-10-20T23:19:57.836924" elapsed="0.000542"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.837619" elapsed="0.000143"/>
</kw>
<var name="${iteration}">84</var>
<status status="PASS" start="2026-10-20T23:19:57.835788" elapsed="0.002009"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.838180" elapsed="0.000163"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.837978" elapsed="0.000399"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.837963" elapsed="0.000437"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.838872" 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-10-20T23:19:57.838555" elapsed="0.000341"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.839619" 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-10-20T23:19:57.839097" elapsed="0.000548"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.839798" elapsed="0.000159"/>
</kw>
<var name="${iteration}">85</var>
<status status="PASS" start="2026-10-20T23:19:57.837936" elapsed="0.002055"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.840371" elapsed="0.000144"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.840153" elapsed="0.000397"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.840138" elapsed="0.000435"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.841046" 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-10-20T23:19:57.840729" elapsed="0.000341"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.841753" 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-10-20T23:19:57.841235" elapsed="0.000544"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.841952" elapsed="0.000144"/>
</kw>
<var name="${iteration}">86</var>
<status status="PASS" start="2026-10-20T23:19:57.840112" elapsed="0.002018"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.842511" elapsed="0.000143"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.842291" elapsed="0.000397"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.842277" elapsed="0.000434"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.843184" 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-10-20T23:19:57.842882" elapsed="0.000326"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.843904" 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-10-20T23:19:57.843387" elapsed="0.000543"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.844081" elapsed="0.000142"/>
</kw>
<var name="${iteration}">87</var>
<status status="PASS" start="2026-10-20T23:19:57.842250" elapsed="0.002007"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.844642" elapsed="0.000143"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.844437" elapsed="0.000398"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.844422" elapsed="0.000438"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.845338" 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-10-20T23:19:57.845019" elapsed="0.000344"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.846043" 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-10-20T23:19:57.845531" elapsed="0.000539"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.846223" elapsed="0.000158"/>
</kw>
<var name="${iteration}">88</var>
<status status="PASS" start="2026-10-20T23:19:57.844395" elapsed="0.002020"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.846781" elapsed="0.000157"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.846579" elapsed="0.000395"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.846564" elapsed="0.000433"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.847470" 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-10-20T23:19:57.847153" elapsed="0.000341"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.848172" 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-10-20T23:19:57.847660" elapsed="0.000539"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.848372" elapsed="0.000145"/>
</kw>
<var name="${iteration}">89</var>
<status status="PASS" start="2026-10-20T23:19:57.846537" elapsed="0.002014"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.849034" elapsed="0.000144"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.848809" elapsed="0.000439"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.848699" elapsed="0.000575"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.849767" 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-10-20T23:19:57.849459" elapsed="0.000332"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.850491" 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-10-20T23:19:57.849974" elapsed="0.000544"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.850671" elapsed="0.000157"/>
</kw>
<var name="${iteration}">90</var>
<status status="PASS" start="2026-10-20T23:19:57.848672" 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-10-20T23:19:57.851232" elapsed="0.000166"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.851027" elapsed="0.000413"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.851013" elapsed="0.000450"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.851940" 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-10-20T23:19:57.851619" elapsed="0.000345"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.852645" 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-10-20T23:19:57.852131" elapsed="0.000541"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.852839" elapsed="0.000150"/>
</kw>
<var name="${iteration}">91</var>
<status status="PASS" start="2026-10-20T23:19:57.850986" elapsed="0.002037"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.853403" elapsed="0.000144"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.853184" elapsed="0.000398"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.853170" elapsed="0.000435"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.854079" 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-10-20T23:19:57.853762" elapsed="0.000341"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.854782" 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-10-20T23:19:57.854268" elapsed="0.000540"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.854980" elapsed="0.000143"/>
</kw>
<var name="${iteration}">92</var>
<status status="PASS" start="2026-10-20T23:19:57.853143" elapsed="0.002014"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.855544" elapsed="0.000141"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.855336" elapsed="0.000384"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.855320" elapsed="0.000423"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.856215" 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-10-20T23:19:57.855914" elapsed="0.000325"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.856935" 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-10-20T23:19:57.856422" elapsed="0.000538"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.857111" elapsed="0.000143"/>
</kw>
<var name="${iteration}">93</var>
<status status="PASS" start="2026-10-20T23:19:57.855278" elapsed="0.002010"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.857670" elapsed="0.000142"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.857467" elapsed="0.000393"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.857453" elapsed="0.000430"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.858357" 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-10-20T23:19:57.858040" elapsed="0.000341"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.859061" 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-10-20T23:19:57.858549" elapsed="0.000537"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.859269" elapsed="0.000161"/>
</kw>
<var name="${iteration}">94</var>
<status status="PASS" start="2026-10-20T23:19:57.857426" elapsed="0.002039"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.859849" elapsed="0.000146"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.859629" elapsed="0.000401"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.859615" elapsed="0.000439"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.860535" 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-10-20T23:19:57.860211" elapsed="0.000348"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.861246" 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-10-20T23:19:57.860726" elapsed="0.000546"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.861443" elapsed="0.000143"/>
</kw>
<var name="${iteration}">95</var>
<status status="PASS" start="2026-10-20T23:19:57.859587" elapsed="0.002034"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.861999" elapsed="0.000143"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.861783" elapsed="0.000395"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.861769" elapsed="0.000432"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.862678" 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-10-20T23:19:57.862373" elapsed="0.000330"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.863407" 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-10-20T23:19:57.862888" elapsed="0.000546"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.863589" elapsed="0.000143"/>
</kw>
<var name="${iteration}">96</var>
<status status="PASS" start="2026-10-20T23:19:57.861742" elapsed="0.002024"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.864248" elapsed="0.000159"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.864042" elapsed="0.000400"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.864027" elapsed="0.000439"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.864943" 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-10-20T23:19:57.864623" elapsed="0.000344"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.865650" 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-10-20T23:19:57.865134" elapsed="0.000542"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.865843" elapsed="0.000144"/>
</kw>
<var name="${iteration}">97</var>
<status status="PASS" start="2026-10-20T23:19:57.863999" elapsed="0.002021"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.866400" elapsed="0.000143"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.866181" elapsed="0.000396"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.866166" elapsed="0.000435"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.867074" 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-10-20T23:19:57.866757" elapsed="0.000341"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.867779" 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-10-20T23:19:57.867264" elapsed="0.000542"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.867975" elapsed="0.000142"/>
</kw>
<var name="${iteration}">98</var>
<status status="PASS" start="2026-10-20T23:19:57.866139" elapsed="0.002011"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.868532" elapsed="0.000143"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.868325" elapsed="0.000384"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.868295" elapsed="0.000437"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.869201" 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-10-20T23:19:57.868900" elapsed="0.000326"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.869917" 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-10-20T23:19:57.869406" elapsed="0.000567"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.870128" elapsed="0.000148"/>
</kw>
<var name="${iteration}">99</var>
<status status="PASS" start="2026-10-20T23:19:57.868269" elapsed="0.002056"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.870692" elapsed="0.000158"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.870487" elapsed="0.000398"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.870473" elapsed="0.000435"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.871384" 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-10-20T23:19:57.871065" elapsed="0.000343"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.872094" 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-10-20T23:19:57.871575" elapsed="0.000546"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.872274" elapsed="0.000160"/>
</kw>
<var name="${iteration}">100</var>
<status status="PASS" start="2026-10-20T23:19:57.870446" elapsed="0.002022"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="PASS" start="2026-10-20T23:19:57.654611" elapsed="0.217886"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.873651" 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>Concatenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-10-20T23:19:57.872657" elapsed="0.001021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:19:57.873731" elapsed="0.000031"/>
</return>
<msg time="2026-10-20T23:19:57.873880" 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-10-20T23:19:57.626063" elapsed="0.247842"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:19:57.875090" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/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-10-20T23:19:57.874872" elapsed="0.000285">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/openflowplugin/add-group-2/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-10-20T23:19:57.875241" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:19:57.874536" elapsed="0.000728"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:57.875566" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:57.875346" elapsed="0.000272"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.876110" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:57.875847" elapsed="0.000288"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.875642" elapsed="0.000525"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.875327" elapsed="0.000860"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.876702" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:19:57.876363" elapsed="0.000364"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-20T23:19:57.876772" elapsed="0.000026"/>
</return>
<msg time="2026-10-20T23:19:57.876912" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/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-10-20T23:19:57.874201" elapsed="0.002734"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.878427" 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-10-20T23:19:57.878040" elapsed="0.000430"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.878896" 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-10-20T23:19:57.878663" elapsed="0.000663"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.879745" 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-10-20T23:19:57.879520" elapsed="0.000265"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.880202" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:57.879986" elapsed="0.000255"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-10-20T23:19:57.880974" 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-10-20T23:19:57.880791" elapsed="0.000208"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-10-20T23:19:57.881291" 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-10-20T23:19:57.881150" elapsed="0.000180"/>
</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-10-20T23:19:57.881491" elapsed="0.000150"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.882064" 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-10-20T23:19:57.881842" elapsed="0.000262"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-10-20T23:19:57.882143" elapsed="0.000026"/>
</return>
<msg time="2026-10-20T23:19:57.882270" 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-10-20T23:19:57.880437" elapsed="0.001856"/>
</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-10-20T23:19:57.887136" level="INFO">POST Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', '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-10-20T23:19:57.887294" level="INFO">POST Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '420'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:19:57.887406" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:19:57.882599" elapsed="0.005159">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1</status>
</kw>
<status status="FAIL" start="2026-10-20T23:19:57.882374" elapsed="0.005470">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1</status>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:57.888027" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:57.887876" elapsed="0.000210"/>
</branch>
<status status="FAIL" start="2026-10-20T23:19:57.882357" elapsed="0.005751">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:57.888458" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-20T23:19:57.888583" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:19:57.888550" elapsed="0.000072"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:19:57.888534" elapsed="0.000108"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:57.888780" elapsed="0.000019"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-20T23:19:57.888854" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="FAIL" start="2026-10-20T23:19:57.877227" elapsed="0.011723">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:19:57.889017" elapsed="0.000015"/>
</return>
<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="FAIL" start="2026-10-20T23:19:57.592550" elapsed="0.296551">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1</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=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-10-20T23:19:57.889372" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:57.889199" elapsed="0.000234"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:19:57.889184" elapsed="0.000270"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:19:57.889484" elapsed="0.000014"/>
</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="FAIL" start="2026-10-20T23:19:57.591885" elapsed="0.297685">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1</status>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-10-20T23:19:57.587614" elapsed="0.302015">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-10-20T23:19:57.587426" elapsed="0.302251">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1</status>
</for>
<doc>Add 100 groups of type 2 in every switch.</doc>
<status status="FAIL" start="2026-10-20T23:19:57.587080" elapsed="0.302749">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1</status>
</test>
<test id="s1-s5-s1-t3" name="Add Flow to Group 2 In Every Switch" line="46">
<for flavor="IN RANGE">
<iter>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.891276" 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-10-20T23:19:57.890914" elapsed="0.000387"/>
</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-10-20T23:19:57.905443" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-flow.manganese/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:57.905103" elapsed="0.000368"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:19:57.906182" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/openflowplugin/add-flow.manganese/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:19:57.905971" elapsed="0.000277">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/openflowplugin/add-flow.manganese/location.uri' does not exist.</status>
</kw>
<msg time="2026-10-20T23:19:57.906347" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:19:57.905634" elapsed="0.000737"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.906867" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/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-10-20T23:19:57.906544" elapsed="0.000348"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-20T23:19:57.907172" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/openflowplugin/add-flow/location.uri"&gt;/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/openflowplugin/add-flow/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-10-20T23:19:57.907336" 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-10-20T23:19:57.907059" elapsed="0.000303"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.907774" 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-10-20T23:19:57.907553" elapsed="0.000276"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.908758" 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-10-20T23:19:57.908527" elapsed="0.000273"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.909242" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.908989" elapsed="0.000277"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.909885" 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-10-20T23:19:57.909601" elapsed="0.000309"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-10-20T23:19:57.910864" 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-10-20T23:19:57.910403" elapsed="0.000486"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-10-20T23:19:57.910937" elapsed="0.000031"/>
</return>
<msg time="2026-10-20T23:19:57.911067" 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-10-20T23:19:57.910076" elapsed="0.001014"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</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-10-20T23:19:57.911257" elapsed="0.000343"/>
</kw>
<var name="${key}">NODE</var>
<var name="${value}">openflow:1</var>
<status status="PASS" start="2026-10-20T23:19:57.909469" elapsed="0.002168"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-10-20T23:19:57.909325" elapsed="0.002346"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-20T23:19:57.911712" elapsed="0.000026"/>
</return>
<msg time="2026-10-20T23:19:57.911855" level="INFO">${mapping_to_use} = {'NODE': 'openflow%3A1'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-20T23:19:57.908169" elapsed="0.003710"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.907899" elapsed="0.004010"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:57.912079" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:57.911932" elapsed="0.000199"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.907879" elapsed="0.004271"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.912832" 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-10-20T23:19:57.912322" elapsed="0.000537"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:19:57.912904" elapsed="0.000026"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-flow.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-flow.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="PASS" start="2026-10-20T23:19:57.904544" elapsed="0.008462"/>
</kw>
<msg time="2026-10-20T23:19:57.913096" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:19:57.900289" elapsed="0.012853"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>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-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-flow.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-flow.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:57.917121" elapsed="0.000025"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>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-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-flow.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-flow.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:57.921078" elapsed="0.000025"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${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-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-flow.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-flow.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:57.925028" elapsed="0.000024"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:57.925209" elapsed="0.000020"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:57.925404" elapsed="0.000019"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:57.925747" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:57.925604" elapsed="0.000193"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:19:57.925590" 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-10-20T23:19:57.925987" elapsed="0.000019"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:57.926164" elapsed="0.000018"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:57.926339" elapsed="0.000019"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-20T23:19:57.925563" elapsed="0.000825"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-20T23:19:57.925473" 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>Concatenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:57.926564" elapsed="0.000019"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-20T23:19:57.926633" elapsed="0.000014"/>
</return>
<msg time="2026-10-20T23:19:57.926740" 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-10-20T23:19:57.899680" elapsed="0.027084"/>
</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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:19:57.930458" elapsed="0.000301"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.935558" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-flow.manganese/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 variable.</doc>
<status status="PASS" start="2026-10-20T23:19:57.935237" elapsed="0.000347"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:19:57.936242" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/openflowplugin/add-flow.manganese/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-10-20T23:19:57.936071" elapsed="0.000229">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/openflowplugin/add-flow.manganese/post_data.prolog.json' does not exist.</status>
</kw>
<msg time="2026-10-20T23:19:57.936401" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:19:57.935739" elapsed="0.000684"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.936912" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/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-10-20T23:19:57.936593" elapsed="0.000343"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-20T23:19:57.937208" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/openflowplugin/add-flow/post_data.prolog.json"&gt;/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/openflowplugin/add-flow/post_data.prolog.json&lt;/a&gt;'.</msg>
<msg time="2026-10-20T23:19:57.937339" 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-10-20T23:19:57.937100" elapsed="0.000263"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.937774" level="INFO">{
  "flow": [
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:57.937556" elapsed="0.000258"/>
</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-10-20T23:19:57.938133" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:57.937887" elapsed="0.000300"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.938631" 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 variable.</doc>
<status status="PASS" start="2026-10-20T23:19:57.938369" elapsed="0.000286"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.938210" elapsed="0.000478"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.937870" elapsed="0.000838"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.939247" 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-10-20T23:19:57.938877" elapsed="0.000396"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:19:57.939336" elapsed="0.000028"/>
</return>
<msg time="2026-10-20T23:19:57.939462" 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-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-flow.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-flow.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="PASS" start="2026-10-20T23:19:57.934728" elapsed="0.004756"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.944541" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-flow.manganese/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 variable.</doc>
<status status="PASS" start="2026-10-20T23:19:57.944219" elapsed="0.000348"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:19:57.945227" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/openflowplugin/add-flow.manganese/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-10-20T23:19:57.945060" elapsed="0.000228">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/openflowplugin/add-flow.manganese/post_data.epilog.json' does not exist.</status>
</kw>
<msg time="2026-10-20T23:19:57.945390" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:19:57.944722" elapsed="0.000690"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.945906" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/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-10-20T23:19:57.945583" elapsed="0.000348"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-20T23:19:57.946234" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/openflowplugin/add-flow/post_data.epilog.json"&gt;/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/openflowplugin/add-flow/post_data.epilog.json&lt;/a&gt;'.</msg>
<msg time="2026-10-20T23:19:57.946366" 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-10-20T23:19:57.946126" elapsed="0.000263"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.946796" level="INFO">  ]
}
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:57.946578" elapsed="0.000271"/>
</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-10-20T23:19:57.947159" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:57.946914" elapsed="0.000298"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.947659" 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 variable.</doc>
<status status="PASS" start="2026-10-20T23:19:57.947397" elapsed="0.000287"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.947235" elapsed="0.000481"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.946897" elapsed="0.000839"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.948275" 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-10-20T23:19:57.947908" elapsed="0.000391"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:19:57.948360" elapsed="0.000028"/>
</return>
<msg time="2026-10-20T23:19:57.948486" 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-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-flow.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-flow.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="PASS" start="2026-10-20T23:19:57.943695" elapsed="0.004813"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.953288" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-flow.manganese/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 variable.</doc>
<status status="PASS" start="2026-10-20T23:19:57.952988" elapsed="0.000341"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:19:57.953982" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/openflowplugin/add-flow.manganese/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-10-20T23:19:57.953800" elapsed="0.000241">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/openflowplugin/add-flow.manganese/data.item.json' does not exist.</status>
</kw>
<msg time="2026-10-20T23:19:57.954123" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:19:57.953484" elapsed="0.000661"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.954638" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/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-10-20T23:19:57.954329" elapsed="0.000334"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-20T23:19:57.954945" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/openflowplugin/add-flow/data.item.json"&gt;/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/openflowplugin/add-flow/data.item.json&lt;/a&gt;'.</msg>
<msg time="2026-10-20T23:19:57.955064" 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-10-20T23:19:57.954837" elapsed="0.000251"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.955517" 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-10-20T23:19:57.955283" 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-10-20T23:19:57.955883" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:57.955625" elapsed="0.000313"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.956381" 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 variable.</doc>
<status status="PASS" start="2026-10-20T23:19:57.956104" elapsed="0.000301"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.955961" elapsed="0.000509"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.955608" elapsed="0.000884"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.957200" 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-10-20T23:19:57.956652" elapsed="0.000575"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:19:57.957271" elapsed="0.000026"/>
</return>
<msg time="2026-10-20T23:19:57.957413" 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-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-flow.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-flow.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Reconciliation/../../../variables/openflowplugin/add-flow/${file_name}.</doc>
<status status="PASS" start="2026-10-20T23:19:57.952518" elapsed="0.004919"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.957833" level="INFO">${items} = []</msg>
<var>${items}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:19:57.957591" elapsed="0.000267"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.958359" 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-10-20T23:19:57.958024" elapsed="0.000359"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:57.958910" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:57.958694" elapsed="0.000270"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.958679" elapsed="0.000308"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.959463" 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-10-20T23:19:57.959142" elapsed="0.000345"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.960364" 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-10-20T23:19:57.959655" elapsed="0.000735"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.960547" elapsed="0.000152"/>
</kw>
<var name="${iteration}">1</var>
<status status="PASS" start="2026-10-20T23:19:57.958650" elapsed="0.002084"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.961120" elapsed="0.000151"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.960912" elapsed="0.000409"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.960897" elapsed="0.000449"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.961853" 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-10-20T23:19:57.961516" elapsed="0.000364"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.962601" 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-10-20T23:19:57.962052" elapsed="0.000575"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.962784" elapsed="0.000162"/>
</kw>
<var name="${iteration}">2</var>
<status status="PASS" start="2026-10-20T23:19:57.960868" elapsed="0.002112"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.963366" elapsed="0.000147"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.963144" elapsed="0.000406"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.963129" elapsed="0.000444"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.964053" 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-10-20T23:19:57.963732" elapsed="0.000345"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.964798" 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-10-20T23:19:57.964247" 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-10-20T23:19:57.964995" elapsed="0.000144"/>
</kw>
<var name="${iteration}">3</var>
<status status="PASS" start="2026-10-20T23:19:57.963102" elapsed="0.002071"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.965560" elapsed="0.000143"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.965353" elapsed="0.000417"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.965337" elapsed="0.000457"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.966273" 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-10-20T23:19:57.965968" elapsed="0.000329"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.967026" 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-10-20T23:19:57.966483" elapsed="0.000569"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.967208" elapsed="0.000160"/>
</kw>
<var name="${iteration}">4</var>
<status status="PASS" start="2026-10-20T23:19:57.965295" elapsed="0.002108"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.967774" elapsed="0.000161"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.967568" elapsed="0.000402"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.967553" elapsed="0.000440"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.968480" 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-10-20T23:19:57.968153" elapsed="0.000352"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.969216" 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-10-20T23:19:57.968674" elapsed="0.000568"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.969412" elapsed="0.000144"/>
</kw>
<var name="${iteration}">5</var>
<status status="PASS" start="2026-10-20T23:19:57.967526" elapsed="0.002065"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.969975" elapsed="0.000146"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.969756" elapsed="0.000399"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.969741" elapsed="0.000438"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.970657" 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-10-20T23:19:57.970352" elapsed="0.000329"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.971416" 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-10-20T23:19:57.970865" elapsed="0.000577"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.971597" elapsed="0.000144"/>
</kw>
<var name="${iteration}">6</var>
<status status="PASS" start="2026-10-20T23:19:57.969713" elapsed="0.002063"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.972161" elapsed="0.000159"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.971955" elapsed="0.000403"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.971940" elapsed="0.000441"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.972858" 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-10-20T23:19:57.972541" elapsed="0.000342"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.973603" 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-10-20T23:19:57.973051" elapsed="0.000579"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.973784" elapsed="0.000160"/>
</kw>
<var name="${iteration}">7</var>
<status status="PASS" start="2026-10-20T23:19:57.971913" elapsed="0.002066"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.974373" elapsed="0.000145"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.974146" elapsed="0.000408"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.974131" elapsed="0.000447"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.975164" 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-10-20T23:19:57.974737" elapsed="0.000451"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.975928" 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-10-20T23:19:57.975377" elapsed="0.000577"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.976109" elapsed="0.000143"/>
</kw>
<var name="${iteration}">8</var>
<status status="PASS" start="2026-10-20T23:19:57.974103" 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-10-20T23:19:57.976704" elapsed="0.000159"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.976499" elapsed="0.000399"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.976485" elapsed="0.000436"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.977406" 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-10-20T23:19:57.977078" elapsed="0.000353"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.978145" 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-10-20T23:19:57.977599" elapsed="0.000572"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.978341" elapsed="0.000146"/>
</kw>
<var name="${iteration}">9</var>
<status status="PASS" start="2026-10-20T23:19:57.976458" elapsed="0.002064"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.978903" elapsed="0.000145"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.978686" elapsed="0.000397"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.978672" elapsed="0.000434"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.979584" 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-10-20T23:19:57.979262" elapsed="0.000346"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.980336" 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-10-20T23:19:57.979775" 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-10-20T23:19:57.980517" elapsed="0.000144"/>
</kw>
<var name="${iteration}">10</var>
<status status="PASS" start="2026-10-20T23:19:57.978644" elapsed="0.002051"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.981079" elapsed="0.000144"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.980875" elapsed="0.000382"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.980860" elapsed="0.000420"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.981763" 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-10-20T23:19:57.981452" elapsed="0.000336"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.982515" 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-10-20T23:19:57.981969" elapsed="0.000573"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.982696" elapsed="0.000157"/>
</kw>
<var name="${iteration}">11</var>
<status status="PASS" start="2026-10-20T23:19:57.980831" elapsed="0.002056"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.983256" elapsed="0.000160"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.983051" elapsed="0.000399"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.983037" elapsed="0.000436"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.983945" 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-10-20T23:19:57.983630" elapsed="0.000340"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.984686" 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-10-20T23:19:57.984137" elapsed="0.000575"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.984884" elapsed="0.000145"/>
</kw>
<var name="${iteration}">12</var>
<status status="PASS" start="2026-10-20T23:19:57.983010" elapsed="0.002054"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.985451" elapsed="0.000145"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.985230" elapsed="0.000401"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.985214" elapsed="0.000441"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.986130" 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-10-20T23:19:57.985811" elapsed="0.000343"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.986887" 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-10-20T23:19:57.986334" 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-10-20T23:19:57.987105" elapsed="0.000146"/>
</kw>
<var name="${iteration}">13</var>
<status status="PASS" start="2026-10-20T23:19:57.985186" elapsed="0.002103"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.987679" elapsed="0.000159"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.987473" elapsed="0.000401"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.987458" elapsed="0.000439"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.988379" 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-10-20T23:19:57.988057" elapsed="0.000346"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.989123" 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-10-20T23:19:57.988571" elapsed="0.000578"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.989304" elapsed="0.000162"/>
</kw>
<var name="${iteration}">14</var>
<status status="PASS" start="2026-10-20T23:19:57.987430" elapsed="0.002070"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.989882" elapsed="0.000248"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.989664" elapsed="0.000502"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.989650" elapsed="0.000539"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.990668" 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-10-20T23:19:57.990361" elapsed="0.000332"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.991425" 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-10-20T23:19:57.990875" elapsed="0.000577"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.991608" elapsed="0.000145"/>
</kw>
<var name="${iteration}">15</var>
<status status="PASS" start="2026-10-20T23:19:57.989623" elapsed="0.002164"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.992168" elapsed="0.000159"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.991965" elapsed="0.000397"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.991951" elapsed="0.000435"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.992860" 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-10-20T23:19:57.992542" elapsed="0.000343"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.993597" 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-10-20T23:19:57.993052" elapsed="0.000571"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.993778" elapsed="0.000160"/>
</kw>
<var name="${iteration}">16</var>
<status status="PASS" start="2026-10-20T23:19:57.991923" elapsed="0.002050"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.994354" elapsed="0.000144"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.994135" elapsed="0.000397"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.994121" elapsed="0.000434"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.995026" 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-10-20T23:19:57.994713" elapsed="0.000338"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.995762" 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-10-20T23:19:57.995218" elapsed="0.000570"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.995957" elapsed="0.000144"/>
</kw>
<var name="${iteration}">17</var>
<status status="PASS" start="2026-10-20T23:19:57.994094" elapsed="0.002042"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.996528" elapsed="0.000144"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.996304" elapsed="0.000403"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.996286" elapsed="0.000446"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.997206" 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-10-20T23:19:57.996901" elapsed="0.000329"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.997999" 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-10-20T23:19:57.997448" elapsed="0.000577"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.998182" elapsed="0.000160"/>
</kw>
<var name="${iteration}">18</var>
<status status="PASS" start="2026-10-20T23:19:57.996257" elapsed="0.002120"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:57.998745" elapsed="0.000160"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:57.998540" elapsed="0.000401"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:57.998525" elapsed="0.000439"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:57.999470" 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-10-20T23:19:57.999121" elapsed="0.000373"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.000209" 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-10-20T23:19:57.999663" elapsed="0.000573"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.000411" elapsed="0.000145"/>
</kw>
<var name="${iteration}">19</var>
<status status="PASS" start="2026-10-20T23:19:57.998498" elapsed="0.002093"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.000976" elapsed="0.000142"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.000755" elapsed="0.000399"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.000740" elapsed="0.000437"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.001655" 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-10-20T23:19:58.001349" elapsed="0.000331"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.002413" 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-10-20T23:19:58.001860" elapsed="0.000580"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.002595" elapsed="0.000144"/>
</kw>
<var name="${iteration}">20</var>
<status status="PASS" start="2026-10-20T23:19:58.000713" elapsed="0.002061"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.003157" elapsed="0.000143"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.002953" elapsed="0.000397"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.002937" elapsed="0.000437"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.003847" 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-10-20T23:19:58.003532" elapsed="0.000341"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.004585" 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-10-20T23:19:58.004040" elapsed="0.000572"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.004767" elapsed="0.000159"/>
</kw>
<var name="${iteration}">21</var>
<status status="PASS" start="2026-10-20T23:19:58.002909" elapsed="0.002052"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.005449" elapsed="0.000146"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.005221" elapsed="0.000411"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.005110" elapsed="0.000546"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.006132" 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-10-20T23:19:58.005814" elapsed="0.000342"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.006883" 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-10-20T23:19:58.006338" elapsed="0.000572"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.007065" elapsed="0.000143"/>
</kw>
<var name="${iteration}">22</var>
<status status="PASS" start="2026-10-20T23:19:58.005083" elapsed="0.002159"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.007628" elapsed="0.000142"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.007423" elapsed="0.000427"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.007409" elapsed="0.000466"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.008360" 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-10-20T23:19:58.008035" elapsed="0.000350"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.009112" 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-10-20T23:19:58.008567" elapsed="0.000571"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.009294" elapsed="0.000160"/>
</kw>
<var name="${iteration}">23</var>
<status status="PASS" start="2026-10-20T23:19:58.007381" elapsed="0.002108"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.009872" elapsed="0.000144"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.009653" elapsed="0.000399"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.009639" elapsed="0.000436"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.010557" 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-10-20T23:19:58.010231" elapsed="0.000350"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.011294" 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-10-20T23:19:58.010749" elapsed="0.000587"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.011491" elapsed="0.000145"/>
</kw>
<var name="${iteration}">24</var>
<status status="PASS" start="2026-10-20T23:19:58.009612" elapsed="0.002058"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.012055" elapsed="0.000143"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.011850" elapsed="0.000383"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.011835" elapsed="0.000421"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.012732" 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-10-20T23:19:58.012429" elapsed="0.000327"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.013484" 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-10-20T23:19:58.012940" elapsed="0.000570"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.013665" elapsed="0.000144"/>
</kw>
<var name="${iteration}">25</var>
<status status="PASS" start="2026-10-20T23:19:58.011792" elapsed="0.002117"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.014277" elapsed="0.000159"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.014072" elapsed="0.000400"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.014058" elapsed="0.000437"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.014970" 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-10-20T23:19:58.014653" elapsed="0.000341"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.015705" 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-10-20T23:19:58.015162" elapsed="0.000569"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.015898" elapsed="0.000145"/>
</kw>
<var name="${iteration}">26</var>
<status status="PASS" start="2026-10-20T23:19:58.014030" elapsed="0.002047"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.016464" elapsed="0.000144"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.016242" elapsed="0.000401"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.016226" elapsed="0.000440"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.017141" 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-10-20T23:19:58.016836" elapsed="0.000329"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.017896" 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-10-20T23:19:58.017347" elapsed="0.000576"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.018112" elapsed="0.000146"/>
</kw>
<var name="${iteration}">27</var>
<status status="PASS" start="2026-10-20T23:19:58.016198" elapsed="0.002099"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.018685" elapsed="0.000159"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.018479" elapsed="0.000401"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.018465" elapsed="0.000438"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.019384" 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-10-20T23:19:58.019062" elapsed="0.000346"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.020127" 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-10-20T23:19:58.019578" elapsed="0.000575"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.020322" elapsed="0.000147"/>
</kw>
<var name="${iteration}">28</var>
<status status="PASS" start="2026-10-20T23:19:58.018437" elapsed="0.002066"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.020990" elapsed="0.000146"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.020767" elapsed="0.000405"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.020753" elapsed="0.000442"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.021679" 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-10-20T23:19:58.021368" elapsed="0.000336"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.022433" 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-10-20T23:19:58.021886" elapsed="0.000573"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.022614" elapsed="0.000142"/>
</kw>
<var name="${iteration}">29</var>
<status status="PASS" start="2026-10-20T23:19:58.020724" elapsed="0.002068"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.023172" elapsed="0.000159"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.022967" elapsed="0.000400"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.022953" elapsed="0.000437"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.023866" 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-10-20T23:19:58.023549" elapsed="0.000341"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.024608" 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-10-20T23:19:58.024059" elapsed="0.000575"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.024791" elapsed="0.000161"/>
</kw>
<var name="${iteration}">30</var>
<status status="PASS" start="2026-10-20T23:19:58.022925" elapsed="0.002062"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.025368" elapsed="0.000144"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.025148" elapsed="0.000400"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.025134" elapsed="0.000437"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.026044" 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-10-20T23:19:58.025727" elapsed="0.000342"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.026781" 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-10-20T23:19:58.026237" elapsed="0.000571"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.026979" elapsed="0.000144"/>
</kw>
<var name="${iteration}">31</var>
<status status="PASS" start="2026-10-20T23:19:58.025107" elapsed="0.002050"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.027540" elapsed="0.000145"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.027333" elapsed="0.000388"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.027303" elapsed="0.000441"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.028220" 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-10-20T23:19:58.027917" elapsed="0.000328"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.028979" 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-10-20T23:19:58.028432" 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-10-20T23:19:58.029195" elapsed="0.000161"/>
</kw>
<var name="${iteration}">32</var>
<status status="PASS" start="2026-10-20T23:19:58.027276" elapsed="0.002115"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.029757" elapsed="0.000159"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.029552" elapsed="0.000400"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.029537" elapsed="0.000438"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.030454" 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-10-20T23:19:58.030133" elapsed="0.000345"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.031187" 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-10-20T23:19:58.030647" elapsed="0.000567"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.031383" elapsed="0.000145"/>
</kw>
<var name="${iteration}">33</var>
<status status="PASS" start="2026-10-20T23:19:58.029510" elapsed="0.002052"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.031946" elapsed="0.000144"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.031724" elapsed="0.000401"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.031709" elapsed="0.000439"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.032623" 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-10-20T23:19:58.032304" elapsed="0.000344"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.033374" 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-10-20T23:19:58.032815" 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-10-20T23:19:58.033554" elapsed="0.000143"/>
</kw>
<var name="${iteration}">34</var>
<status status="PASS" start="2026-10-20T23:19:58.031682" elapsed="0.002049"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.034117" elapsed="0.000143"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.033912" elapsed="0.000384"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.033897" elapsed="0.000439"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.034803" 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-10-20T23:19:58.034495" elapsed="0.000345"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.035655" 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-10-20T23:19:58.035010" 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-10-20T23:19:58.035851" elapsed="0.000146"/>
</kw>
<var name="${iteration}">35</var>
<status status="PASS" start="2026-10-20T23:19:58.033869" elapsed="0.002163"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.036412" elapsed="0.000144"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.036194" elapsed="0.000396"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.036179" elapsed="0.000435"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.037089" 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-10-20T23:19:58.036771" elapsed="0.000343"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.037838" 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-10-20T23:19:58.037281" 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-10-20T23:19:58.038019" elapsed="0.000148"/>
</kw>
<var name="${iteration}">36</var>
<status status="PASS" start="2026-10-20T23:19:58.036152" elapsed="0.002049"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.038585" elapsed="0.000145"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.038379" elapsed="0.000384"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.038365" elapsed="0.000422"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.039266" 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-10-20T23:19:58.038961" elapsed="0.000329"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.040055" 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-10-20T23:19:58.039506" elapsed="0.000576"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.040237" elapsed="0.000166"/>
</kw>
<var name="${iteration}">37</var>
<status status="PASS" start="2026-10-20T23:19:58.038337" elapsed="0.002101"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.040804" elapsed="0.000164"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.040600" elapsed="0.000403"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.040585" elapsed="0.000441"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.041507" 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-10-20T23:19:58.041182" elapsed="0.000349"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.042245" 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-10-20T23:19:58.041700" elapsed="0.000571"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.042441" elapsed="0.000147"/>
</kw>
<var name="${iteration}">38</var>
<status status="PASS" start="2026-10-20T23:19:58.040558" elapsed="0.002063"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.043006" elapsed="0.000145"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.042782" elapsed="0.000403"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.042768" elapsed="0.000440"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.043688" 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-10-20T23:19:58.043382" elapsed="0.000330"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.044435" 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-10-20T23:19:58.043894" elapsed="0.000567"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.044615" elapsed="0.000144"/>
</kw>
<var name="${iteration}">39</var>
<status status="PASS" start="2026-10-20T23:19:58.042741" elapsed="0.002052"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.045179" elapsed="0.000160"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.044974" elapsed="0.000400"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.044958" elapsed="0.000440"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.045871" 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-10-20T23:19:58.045556" elapsed="0.000340"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.046613" 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-10-20T23:19:58.046063" elapsed="0.000576"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.046795" elapsed="0.000163"/>
</kw>
<var name="${iteration}">40</var>
<status status="PASS" start="2026-10-20T23:19:58.044930" elapsed="0.002064"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.047385" elapsed="0.000144"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.047159" elapsed="0.000406"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.047144" elapsed="0.000445"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.048065" 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-10-20T23:19:58.047746" elapsed="0.000344"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.048806" 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-10-20T23:19:58.048256" 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-10-20T23:19:58.049001" elapsed="0.000144"/>
</kw>
<var name="${iteration}">41</var>
<status status="PASS" start="2026-10-20T23:19:58.047116" elapsed="0.002063"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.049562" elapsed="0.000144"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.049358" elapsed="0.000414"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.049343" elapsed="0.000454"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.050411" 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-10-20T23:19:58.049973" elapsed="0.000463"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.051148" 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-10-20T23:19:58.050604" elapsed="0.000571"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.051344" elapsed="0.000144"/>
</kw>
<var name="${iteration}">42</var>
<status status="PASS" start="2026-10-20T23:19:58.049300" 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-10-20T23:19:58.051902" elapsed="0.000145"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.051685" elapsed="0.000397"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.051671" elapsed="0.000434"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.052582" 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-10-20T23:19:58.052261" elapsed="0.000345"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.053336" 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-10-20T23:19:58.052773" 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-10-20T23:19:58.053518" elapsed="0.000143"/>
</kw>
<var name="${iteration}">43</var>
<status status="PASS" start="2026-10-20T23:19:58.051644" elapsed="0.002050"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.054079" elapsed="0.000143"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.053873" elapsed="0.000384"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.053858" elapsed="0.000423"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.054896" 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-10-20T23:19:58.054574" elapsed="0.000346"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.055639" 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-10-20T23:19:58.055087" elapsed="0.000579"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.055834" elapsed="0.000146"/>
</kw>
<var name="${iteration}">44</var>
<status status="PASS" start="2026-10-20T23:19:58.053816" 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-10-20T23:19:58.056404" elapsed="0.000145"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.056179" elapsed="0.000405"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.056165" elapsed="0.000442"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.057086" 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-10-20T23:19:58.056764" elapsed="0.000347"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.057837" 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-10-20T23:19:58.057279" 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-10-20T23:19:58.058017" elapsed="0.000143"/>
</kw>
<var name="${iteration}">45</var>
<status status="PASS" start="2026-10-20T23:19:58.056137" elapsed="0.002057"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.058578" elapsed="0.000143"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.058374" elapsed="0.000381"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.058360" elapsed="0.000419"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.059253" 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-10-20T23:19:58.058949" elapsed="0.000328"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.060002" 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-10-20T23:19:58.059459" elapsed="0.000570"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.060218" elapsed="0.000159"/>
</kw>
<var name="${iteration}">46</var>
<status status="PASS" start="2026-10-20T23:19:58.058331" elapsed="0.002081"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.060780" elapsed="0.000158"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.060576" elapsed="0.000397"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.060562" elapsed="0.000434"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.061471" 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-10-20T23:19:58.061152" elapsed="0.000344"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.062208" 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-10-20T23:19:58.061662" elapsed="0.000573"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.062403" elapsed="0.000146"/>
</kw>
<var name="${iteration}">47</var>
<status status="PASS" start="2026-10-20T23:19:58.060535" elapsed="0.002048"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.062966" elapsed="0.000144"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.062748" elapsed="0.000396"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.062734" elapsed="0.000433"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.063644" 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-10-20T23:19:58.063338" elapsed="0.000331"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.064399" 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-10-20T23:19:58.063850" elapsed="0.000576"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.064578" elapsed="0.000144"/>
</kw>
<var name="${iteration}">48</var>
<status status="PASS" start="2026-10-20T23:19:58.062707" elapsed="0.002049"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.065138" elapsed="0.000268"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.064933" elapsed="0.000509"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.064919" elapsed="0.000547"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.065941" 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-10-20T23:19:58.065622" elapsed="0.000344"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.066677" 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-10-20T23:19:58.066131" elapsed="0.000573"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.066870" elapsed="0.000144"/>
</kw>
<var name="${iteration}">49</var>
<status status="PASS" start="2026-10-20T23:19:58.064892" elapsed="0.002156"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.067431" elapsed="0.000144"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.067210" elapsed="0.000399"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.067195" elapsed="0.000438"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.068109" 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-10-20T23:19:58.067788" elapsed="0.000345"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.068862" 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-10-20T23:19:58.068299" 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-10-20T23:19:58.069043" elapsed="0.000143"/>
</kw>
<var name="${iteration}">50</var>
<status status="PASS" start="2026-10-20T23:19:58.067169" elapsed="0.002051"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.069618" elapsed="0.000143"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.069413" elapsed="0.000383"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.069399" elapsed="0.000434"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.070298" 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-10-20T23:19:58.069993" elapsed="0.000345"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.071058" 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-10-20T23:19:58.070507" 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-10-20T23:19:58.071272" elapsed="0.000161"/>
</kw>
<var name="${iteration}">51</var>
<status status="PASS" start="2026-10-20T23:19:58.069370" elapsed="0.002098"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.071849" elapsed="0.000145"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.071630" elapsed="0.000400"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.071616" elapsed="0.000437"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.072535" 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-10-20T23:19:58.072210" elapsed="0.000350"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.073278" 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-10-20T23:19:58.072727" elapsed="0.000578"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.073478" elapsed="0.000145"/>
</kw>
<var name="${iteration}">52</var>
<status status="PASS" start="2026-10-20T23:19:58.071589" elapsed="0.002068"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.074040" elapsed="0.000143"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.073834" elapsed="0.000384"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.073806" elapsed="0.000435"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.074732" 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-10-20T23:19:58.074418" elapsed="0.000339"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.075492" 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-10-20T23:19:58.074940" elapsed="0.000579"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.075674" elapsed="0.000160"/>
</kw>
<var name="${iteration}">53</var>
<status status="PASS" start="2026-10-20T23:19:58.073779" elapsed="0.002091"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.076242" elapsed="0.000160"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.076036" elapsed="0.000401"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.076021" elapsed="0.000439"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.076936" 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-10-20T23:19:58.076617" elapsed="0.000344"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.077674" 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-10-20T23:19:58.077127" elapsed="0.000574"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.077868" elapsed="0.000144"/>
</kw>
<var name="${iteration}">54</var>
<status status="PASS" start="2026-10-20T23:19:58.075993" elapsed="0.002054"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.078433" elapsed="0.000144"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.078212" elapsed="0.000399"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.078196" elapsed="0.000438"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.079111" 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-10-20T23:19:58.078791" elapsed="0.000346"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.079864" 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-10-20T23:19:58.079303" 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-10-20T23:19:58.080044" elapsed="0.000143"/>
</kw>
<var name="${iteration}">55</var>
<status status="PASS" start="2026-10-20T23:19:58.078169" elapsed="0.002053"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.080715" elapsed="0.000159"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.080504" elapsed="0.000405"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.080389" elapsed="0.000543"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.081410" 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-10-20T23:19:58.081091" elapsed="0.000344"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.082187" 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-10-20T23:19:58.081637" elapsed="0.000577"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.082392" elapsed="0.000145"/>
</kw>
<var name="${iteration}">56</var>
<status status="PASS" start="2026-10-20T23:19:58.080361" 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-10-20T23:19:58.082958" elapsed="0.000144"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.082736" elapsed="0.000401"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.082721" elapsed="0.000439"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.083635" 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-10-20T23:19:58.083332" elapsed="0.000328"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.084387" 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-10-20T23:19:58.083841" elapsed="0.000572"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.084569" elapsed="0.000144"/>
</kw>
<var name="${iteration}">57</var>
<status status="PASS" start="2026-10-20T23:19:58.082694" elapsed="0.002053"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.085131" elapsed="0.000143"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.084927" elapsed="0.000396"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.084912" elapsed="0.000436"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.085810" 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-10-20T23:19:58.085506" elapsed="0.000341"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.086562" 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-10-20T23:19:58.086016" elapsed="0.000572"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.086743" elapsed="0.000162"/>
</kw>
<var name="${iteration}">58</var>
<status status="PASS" start="2026-10-20T23:19:58.084884" elapsed="0.002056"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.087326" elapsed="0.000147"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.087106" elapsed="0.000401"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.087091" elapsed="0.000440"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.088009" 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-10-20T23:19:58.087689" elapsed="0.000345"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.088750" 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-10-20T23:19:58.088203" elapsed="0.000573"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.089112" elapsed="0.000145"/>
</kw>
<var name="${iteration}">59</var>
<status status="PASS" start="2026-10-20T23:19:58.087063" 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-10-20T23:19:58.089677" elapsed="0.000157"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.089471" elapsed="0.000400"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.089457" elapsed="0.000438"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.090375" 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-10-20T23:19:58.090054" elapsed="0.000346"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.091114" 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-10-20T23:19:58.090569" elapsed="0.000571"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.091295" elapsed="0.000165"/>
</kw>
<var name="${iteration}">60</var>
<status status="PASS" start="2026-10-20T23:19:58.089429" elapsed="0.002065"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.091878" elapsed="0.000144"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.091659" elapsed="0.000429"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.091644" elapsed="0.000469"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.092595" 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-10-20T23:19:58.092273" elapsed="0.000347"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.093353" 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-10-20T23:19:58.092789" 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-10-20T23:19:58.093537" elapsed="0.000145"/>
</kw>
<var name="${iteration}">61</var>
<status status="PASS" start="2026-10-20T23:19:58.091616" elapsed="0.002101"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.094103" elapsed="0.000146"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.093894" elapsed="0.000391"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.093880" elapsed="0.000447"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.094793" 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-10-20T23:19:58.094488" elapsed="0.000330"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.095551" 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-10-20T23:19:58.095002" elapsed="0.000576"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.095733" elapsed="0.000156"/>
</kw>
<var name="${iteration}">62</var>
<status status="PASS" start="2026-10-20T23:19:58.093851" elapsed="0.002072"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.096815" elapsed="0.000162"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.096607" elapsed="0.000405"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.096592" elapsed="0.000443"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.097521" 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-10-20T23:19:58.097194" elapsed="0.000351"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.098267" 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-10-20T23:19:58.097714" elapsed="0.000580"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.098467" elapsed="0.000147"/>
</kw>
<var name="${iteration}">63</var>
<status status="PASS" start="2026-10-20T23:19:58.096562" elapsed="0.002086"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.099032" elapsed="0.000144"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.098811" elapsed="0.000400"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.098797" elapsed="0.000437"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.099714" 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-10-20T23:19:58.099407" elapsed="0.000332"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.100477" 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-10-20T23:19:58.099922" elapsed="0.000581"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.100658" elapsed="0.000142"/>
</kw>
<var name="${iteration}">64</var>
<status status="PASS" start="2026-10-20T23:19:58.098769" elapsed="0.002080"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.101217" elapsed="0.000161"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.101012" elapsed="0.000401"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.100998" elapsed="0.000439"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.101914" 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-10-20T23:19:58.101595" elapsed="0.000344"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.102655" 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-10-20T23:19:58.102107" elapsed="0.000574"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.102885" elapsed="0.000147"/>
</kw>
<var name="${iteration}">65</var>
<status status="PASS" start="2026-10-20T23:19:58.100972" elapsed="0.002095"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.103457" elapsed="0.000145"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.103230" elapsed="0.000406"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.103216" elapsed="0.000444"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.104136" 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-10-20T23:19:58.103816" elapsed="0.000344"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.104898" 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-10-20T23:19:58.104343" elapsed="0.000582"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.105081" elapsed="0.000144"/>
</kw>
<var name="${iteration}">66</var>
<status status="PASS" start="2026-10-20T23:19:58.103189" elapsed="0.002070"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.105645" elapsed="0.000144"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.105440" elapsed="0.000396"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.105425" elapsed="0.000436"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.106338" 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-10-20T23:19:58.106019" elapsed="0.000344"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.107075" 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-10-20T23:19:58.106531" elapsed="0.000570"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.107256" elapsed="0.000171"/>
</kw>
<var name="${iteration}">67</var>
<status status="PASS" start="2026-10-20T23:19:58.105398" elapsed="0.002067"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.107845" elapsed="0.000145"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.107627" elapsed="0.000397"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.107613" elapsed="0.000435"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.108528" 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-10-20T23:19:58.108206" elapsed="0.000346"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.109270" 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-10-20T23:19:58.108719" elapsed="0.000578"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.109469" elapsed="0.000145"/>
</kw>
<var name="${iteration}">68</var>
<status status="PASS" start="2026-10-20T23:19:58.107586" elapsed="0.002062"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.110034" elapsed="0.000147"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.109811" elapsed="0.000406"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.109796" elapsed="0.000444"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.110763" 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-10-20T23:19:58.110417" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.111660" 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-10-20T23:19:58.110975" elapsed="0.000712"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.111859" elapsed="0.000158"/>
</kw>
<var name="${iteration}">69</var>
<status status="PASS" start="2026-10-20T23:19:58.109769" 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-10-20T23:19:58.112449" elapsed="0.000147"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.112223" elapsed="0.000408"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.112207" elapsed="0.000448"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.113141" 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-10-20T23:19:58.112814" elapsed="0.000352"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.113905" 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-10-20T23:19:58.113354" 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-10-20T23:19:58.114129" elapsed="0.000146"/>
</kw>
<var name="${iteration}">70</var>
<status status="PASS" start="2026-10-20T23:19:58.112178" elapsed="0.002145"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.114699" elapsed="0.000161"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.114491" elapsed="0.000405"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.114476" elapsed="0.000444"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.115404" 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-10-20T23:19:58.115079" elapsed="0.000350"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.116148" 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-10-20T23:19:58.115598" elapsed="0.000577"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.116347" elapsed="0.000148"/>
</kw>
<var name="${iteration}">71</var>
<status status="PASS" start="2026-10-20T23:19:58.114448" elapsed="0.002081"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.116913" elapsed="0.000145"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.116694" elapsed="0.000398"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.116679" elapsed="0.000437"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.117596" 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-10-20T23:19:58.117273" elapsed="0.000348"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.118351" 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-10-20T23:19:58.117787" 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-10-20T23:19:58.118534" elapsed="0.000146"/>
</kw>
<var name="${iteration}">72</var>
<status status="PASS" start="2026-10-20T23:19:58.116651" elapsed="0.002063"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.119099" elapsed="0.000146"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.118893" elapsed="0.000387"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.118878" elapsed="0.000426"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.119787" 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-10-20T23:19:58.119478" elapsed="0.000334"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.120547" 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-10-20T23:19:58.119996" elapsed="0.000578"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.120729" elapsed="0.000158"/>
</kw>
<var name="${iteration}">73</var>
<status status="PASS" start="2026-10-20T23:19:58.118849" elapsed="0.002073"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.121290" elapsed="0.000159"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.121086" elapsed="0.000398"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.121071" elapsed="0.000436"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.121996" 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-10-20T23:19:58.121674" elapsed="0.000347"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.122731" 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-10-20T23:19:58.122187" elapsed="0.000571"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.122925" elapsed="0.000145"/>
</kw>
<var name="${iteration}">74</var>
<status status="PASS" start="2026-10-20T23:19:58.121044" elapsed="0.002061"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.123490" elapsed="0.000144"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.123269" elapsed="0.000401"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.123254" elapsed="0.000441"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.124175" 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-10-20T23:19:58.123866" elapsed="0.000334"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.124978" 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-10-20T23:19:58.124420" 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-10-20T23:19:58.125161" elapsed="0.000159"/>
</kw>
<var name="${iteration}">75</var>
<status status="PASS" start="2026-10-20T23:19:58.123226" elapsed="0.002131"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.125729" elapsed="0.000161"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.125523" elapsed="0.000404"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.125509" elapsed="0.000442"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.126543" 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-10-20T23:19:58.126109" elapsed="0.000459"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.127286" 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-10-20T23:19:58.126738" 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-10-20T23:19:58.127485" elapsed="0.000145"/>
</kw>
<var name="${iteration}">76</var>
<status status="PASS" start="2026-10-20T23:19:58.125481" 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-10-20T23:19:58.128050" elapsed="0.000145"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.127842" elapsed="0.000388"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.127815" elapsed="0.000438"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.128733" 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-10-20T23:19:58.128426" elapsed="0.000331"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.129488" 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-10-20T23:19:58.128940" elapsed="0.000575"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.129671" elapsed="0.000145"/>
</kw>
<var name="${iteration}">77</var>
<status status="PASS" start="2026-10-20T23:19:58.127787" elapsed="0.002077"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.130237" elapsed="0.000161"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.130031" elapsed="0.000402"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.130016" elapsed="0.000441"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.130941" 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-10-20T23:19:58.130619" elapsed="0.000347"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.131686" 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-10-20T23:19:58.131139" elapsed="0.000574"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.131883" elapsed="0.000144"/>
</kw>
<var name="${iteration}">78</var>
<status status="PASS" start="2026-10-20T23:19:58.129989" elapsed="0.002072"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.132450" elapsed="0.000145"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.132224" elapsed="0.000406"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.132210" elapsed="0.000444"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.133129" 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-10-20T23:19:58.132810" elapsed="0.000344"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.133878" 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-10-20T23:19:58.133334" elapsed="0.000571"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.134058" elapsed="0.000145"/>
</kw>
<var name="${iteration}">79</var>
<status status="PASS" start="2026-10-20T23:19:58.132183" elapsed="0.002054"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.134634" elapsed="0.000143"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.134431" elapsed="0.000429"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.134416" elapsed="0.000470"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.135370" 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-10-20T23:19:58.135046" elapsed="0.000349"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.136106" 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-10-20T23:19:58.135563" elapsed="0.000570"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.136287" elapsed="0.000164"/>
</kw>
<var name="${iteration}">80</var>
<status status="PASS" start="2026-10-20T23:19:58.134378" elapsed="0.002107"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.136871" elapsed="0.000145"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.136651" elapsed="0.000400"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.136636" elapsed="0.000439"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.137558" 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-10-20T23:19:58.137234" elapsed="0.000348"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.138297" 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-10-20T23:19:58.137749" 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-10-20T23:19:58.138497" elapsed="0.000144"/>
</kw>
<var name="${iteration}">81</var>
<status status="PASS" start="2026-10-20T23:19:58.136609" elapsed="0.002065"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.139055" elapsed="0.000144"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.138850" elapsed="0.000383"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.138835" elapsed="0.000422"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.139734" 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-10-20T23:19:58.139430" elapsed="0.000329"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.140501" 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-10-20T23:19:58.139941" elapsed="0.000587"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.140682" elapsed="0.000160"/>
</kw>
<var name="${iteration}">82</var>
<status status="PASS" start="2026-10-20T23:19:58.138796" elapsed="0.002081"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.141253" elapsed="0.000269"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.141046" elapsed="0.000512"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.141029" elapsed="0.000553"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.142069" 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-10-20T23:19:58.141742" elapsed="0.000352"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.142811" 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-10-20T23:19:58.142264" 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-10-20T23:19:58.143009" elapsed="0.000144"/>
</kw>
<var name="${iteration}">83</var>
<status status="PASS" start="2026-10-20T23:19:58.141001" 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-10-20T23:19:58.143578" elapsed="0.000144"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.143370" elapsed="0.000387"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.143355" elapsed="0.000426"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.144258" 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-10-20T23:19:58.143953" elapsed="0.000330"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.145015" 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-10-20T23:19:58.144467" elapsed="0.000574"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.145229" elapsed="0.000163"/>
</kw>
<var name="${iteration}">84</var>
<status status="PASS" start="2026-10-20T23:19:58.143325" elapsed="0.002103"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.145798" elapsed="0.000157"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.145593" elapsed="0.000398"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.145578" elapsed="0.000436"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.146491" 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-10-20T23:19:58.146171" elapsed="0.000345"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.147231" 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-10-20T23:19:58.146685" elapsed="0.000573"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.147428" elapsed="0.000146"/>
</kw>
<var name="${iteration}">85</var>
<status status="PASS" start="2026-10-20T23:19:58.145551" elapsed="0.002057"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.148000" elapsed="0.000144"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.147772" elapsed="0.000407"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.147758" elapsed="0.000444"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.148689" 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-10-20T23:19:58.148379" elapsed="0.000334"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.149445" 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-10-20T23:19:58.148897" elapsed="0.000575"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.149627" elapsed="0.000145"/>
</kw>
<var name="${iteration}">86</var>
<status status="PASS" start="2026-10-20T23:19:58.147730" elapsed="0.002076"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.150195" elapsed="0.000161"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.149985" elapsed="0.000411"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.149970" elapsed="0.000453"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.150905" 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-10-20T23:19:58.150583" elapsed="0.000347"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.151651" 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-10-20T23:19:58.151099" elapsed="0.000578"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.151847" elapsed="0.000147"/>
</kw>
<var name="${iteration}">87</var>
<status status="PASS" start="2026-10-20T23:19:58.149942" elapsed="0.002086"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.152415" elapsed="0.000145"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.152194" elapsed="0.000401"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.152179" elapsed="0.000440"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.153094" 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-10-20T23:19:58.152775" elapsed="0.000343"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.153845" 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-10-20T23:19:58.153286" elapsed="0.000586"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.154026" elapsed="0.000142"/>
</kw>
<var name="${iteration}">88</var>
<status status="PASS" start="2026-10-20T23:19:58.152152" elapsed="0.002051"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.154591" elapsed="0.000143"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.154386" elapsed="0.000384"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.154369" elapsed="0.000424"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.155270" 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-10-20T23:19:58.154967" elapsed="0.000327"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.156022" 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-10-20T23:19:58.155480" 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-10-20T23:19:58.156236" elapsed="0.000161"/>
</kw>
<var name="${iteration}">89</var>
<status status="PASS" start="2026-10-20T23:19:58.154340" elapsed="0.002093"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.156927" elapsed="0.000148"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.156697" elapsed="0.000414"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.156583" elapsed="0.000552"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.157621" 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-10-20T23:19:58.157295" elapsed="0.000350"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.158381" 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-10-20T23:19:58.157814" 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-10-20T23:19:58.158565" elapsed="0.000146"/>
</kw>
<var name="${iteration}">90</var>
<status status="PASS" start="2026-10-20T23:19:58.156556" 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-10-20T23:19:58.159133" elapsed="0.000144"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.158927" elapsed="0.000400"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.158913" elapsed="0.000439"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.159812" 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-10-20T23:19:58.159510" elapsed="0.000342"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.160571" 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-10-20T23:19:58.160021" elapsed="0.000576"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.160751" elapsed="0.000161"/>
</kw>
<var name="${iteration}">91</var>
<status status="PASS" start="2026-10-20T23:19:58.158885" elapsed="0.002062"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.161329" elapsed="0.000146"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.161110" elapsed="0.000399"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.161096" elapsed="0.000436"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.162009" 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-10-20T23:19:58.161689" elapsed="0.000344"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.162745" 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-10-20T23:19:58.162201" elapsed="0.000571"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.162941" elapsed="0.000145"/>
</kw>
<var name="${iteration}">92</var>
<status status="PASS" start="2026-10-20T23:19:58.161069" elapsed="0.002051"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.163509" elapsed="0.000144"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.163285" elapsed="0.000402"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.163269" elapsed="0.000441"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.164190" 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-10-20T23:19:58.163884" elapsed="0.000330"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.164940" 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-10-20T23:19:58.164396" elapsed="0.000570"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.165120" elapsed="0.000143"/>
</kw>
<var name="${iteration}">93</var>
<status status="PASS" start="2026-10-20T23:19:58.163242" elapsed="0.002054"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.165678" elapsed="0.000143"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.165475" elapsed="0.000395"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.165460" elapsed="0.000433"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.166370" 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-10-20T23:19:58.166051" elapsed="0.000343"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.167149" 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-10-20T23:19:58.166595" elapsed="0.000580"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.167347" elapsed="0.000145"/>
</kw>
<var name="${iteration}">94</var>
<status status="PASS" start="2026-10-20T23:19:58.165433" elapsed="0.002093"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.167911" elapsed="0.000147"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.167689" elapsed="0.000403"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.167675" elapsed="0.000440"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.168597" 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-10-20T23:19:58.168275" elapsed="0.000347"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.169350" 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-10-20T23:19:58.168789" 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-10-20T23:19:58.169531" elapsed="0.000144"/>
</kw>
<var name="${iteration}">95</var>
<status status="PASS" start="2026-10-20T23:19:58.167648" elapsed="0.002061"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.170094" elapsed="0.000144"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.169888" elapsed="0.000385"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.169873" elapsed="0.000423"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.170775" 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-10-20T23:19:58.170470" elapsed="0.000330"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.171531" 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-10-20T23:19:58.170980" elapsed="0.000577"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.171710" elapsed="0.000160"/>
</kw>
<var name="${iteration}">96</var>
<status status="PASS" start="2026-10-20T23:19:58.169844" elapsed="0.002061"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.172394" elapsed="0.000146"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.172172" elapsed="0.000404"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.172157" elapsed="0.000442"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.173080" 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-10-20T23:19:58.172757" elapsed="0.000348"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.173850" 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-10-20T23:19:58.173273" 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-10-20T23:19:58.174036" elapsed="0.000145"/>
</kw>
<var name="${iteration}">97</var>
<status status="PASS" start="2026-10-20T23:19:58.172129" elapsed="0.002086"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.174601" elapsed="0.000143"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.174395" elapsed="0.000384"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.174380" elapsed="0.000422"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.175279" 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-10-20T23:19:58.174975" elapsed="0.000329"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.176034" 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-10-20T23:19:58.175488" elapsed="0.000573"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.176218" elapsed="0.000160"/>
</kw>
<var name="${iteration}">98</var>
<status status="PASS" start="2026-10-20T23:19:58.174352" elapsed="0.002061"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.176778" elapsed="0.000154"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.176575" elapsed="0.000425"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.176560" elapsed="0.000465"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.177511" 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-10-20T23:19:58.177186" elapsed="0.000350"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.178252" 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-10-20T23:19:58.177704" elapsed="0.000575"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.178451" elapsed="0.000144"/>
</kw>
<var name="${iteration}">99</var>
<status status="PASS" start="2026-10-20T23:19:58.176533" elapsed="0.002097"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.179015" elapsed="0.000143"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.178792" elapsed="0.000402"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.178778" elapsed="0.000439"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.179696" 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-10-20T23:19:58.179389" elapsed="0.000332"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.180452" 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-10-20T23:19:58.179902" elapsed="0.000577"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:19:58.180633" elapsed="0.000145"/>
</kw>
<var name="${iteration}">100</var>
<status status="PASS" start="2026-10-20T23:19:58.178751" elapsed="0.002061"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="PASS" start="2026-10-20T23:19:57.958434" elapsed="0.222420"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.182034" 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>Concatenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-10-20T23:19:58.181015" elapsed="0.001046"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:19:58.182116" elapsed="0.000032"/>
</return>
<msg time="2026-10-20T23:19:58.182253" 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-10-20T23:19:57.929739" elapsed="0.252539"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:19:58.183504" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/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-10-20T23:19:58.183270" elapsed="0.000302">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/openflowplugin/add-flow/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-10-20T23:19:58.183655" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:19:58.182943" elapsed="0.000735"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:58.183977" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:58.183741" elapsed="0.000289"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.184523" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:19:58.184243" elapsed="0.000304"/>
</kw>
<status status="PASS" start="2026-10-20T23:19:58.184054" elapsed="0.000524"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.183724" elapsed="0.000874"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.185113" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:19:58.184757" elapsed="0.000379"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-20T23:19:58.185181" elapsed="0.000026"/>
</return>
<msg time="2026-10-20T23:19:58.185304" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/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-10-20T23:19:58.182607" elapsed="0.002735"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.186860" 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-10-20T23:19:58.186481" elapsed="0.000422"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.187325" 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-10-20T23:19:58.187092" elapsed="0.000949"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.188477" 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-10-20T23:19:58.188234" elapsed="0.000283"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.188939" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:58.188703" elapsed="0.000276"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-10-20T23:19:58.189707" 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-10-20T23:19:58.189537" elapsed="0.000195"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-10-20T23:19:58.190040" 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-10-20T23:19:58.189897" elapsed="0.000167"/>
</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-10-20T23:19:58.190223" elapsed="0.000165"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.190798" 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-10-20T23:19:58.190577" elapsed="0.000274"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-10-20T23:19:58.190890" elapsed="0.000027"/>
</return>
<msg time="2026-10-20T23:19:58.191019" 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-10-20T23:19:58.189161" elapsed="0.001881"/>
</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-10-20T23:19:58.195524" level="INFO">POST Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', '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-10-20T23:19:58.195677" level="INFO">POST Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '448'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:19:58.195772" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:19:58.191348" elapsed="0.004789">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0</status>
</kw>
<status status="FAIL" start="2026-10-20T23:19:58.191107" elapsed="0.005105">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0</status>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:58.196417" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:58.196243" elapsed="0.000235"/>
</branch>
<status status="FAIL" start="2026-10-20T23:19:58.191090" elapsed="0.005411">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:58.196849" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-20T23:19:58.196977" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:19:58.196942" elapsed="0.000075"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:19:58.196925" elapsed="0.000113"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:58.197176" elapsed="0.000020"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-20T23:19:58.197237" elapsed="0.000014"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="FAIL" start="2026-10-20T23:19:58.185673" elapsed="0.011676">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:19:58.197429" elapsed="0.000015"/>
</return>
<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="FAIL" start="2026-10-20T23:19:57.895959" elapsed="0.301558">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=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-10-20T23:19:58.197779" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:58.197618" elapsed="0.000232"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:19:58.197603" elapsed="0.000270"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:19:58.197904" elapsed="0.000014"/>
</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="FAIL" start="2026-10-20T23:19:57.895303" elapsed="0.302689">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0</status>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-10-20T23:19:57.890741" elapsed="0.307313">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-10-20T23:19:57.890555" elapsed="0.307549">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0</status>
</for>
<doc>Add 100 flows to group type 2 in every switch.</doc>
<status status="FAIL" start="2026-10-20T23:19:57.890189" elapsed="0.308086">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0</status>
</test>
<test id="s1-s5-s1-t4" name="Start Mininet Linear" line="57">
<kw name="Start Mininet Linear" owner="MininetKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.199852" level="INFO">Start Mininet Linear</msg>
<arg>Start Mininet Linear</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:58.199624" elapsed="0.000272"/>
</kw>
<kw name="Start Mininet Single Controller" owner="MininetKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.201043" 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-10-20T23:19:58.200819" elapsed="0.000267"/>
</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 or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:58.203454" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:58.203186" elapsed="0.000321"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:58.203168" elapsed="0.000363"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:19:58.203897" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-10-20T23:19:58.203727" elapsed="0.000288"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.204513" level="INFO">Attempting to execute command "sudo mn -c" on remote system "10.30.170.219" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:58.204203" elapsed="0.000352"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:19:58.205051" 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-10-20T23:19:58.204735" elapsed="0.000339"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-20T23:19:58.205907" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:19:58.205976" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-20T23:19:58.205643" elapsed="0.000356"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:19:58.206149" elapsed="0.000314"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:19:58.207242" level="INFO">Logging into '10.30.170.219:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:19:58.605950" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Tue Oct 20 23:19:53 UTC 2026

  System load:  0.04               Processes:             110
  Usage of /:   19.8% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.219
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

5 updates can be applied immediately.
To see these additional updates run: apt list --upgradable

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


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


Last login: Tue Oct 20 23:19:56 2026 from 10.30.170.114
[?2004h[jenkins@releng-34016-79-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-10-20T23:19:58.207011" elapsed="0.399057"/>
</kw>
<msg time="2026-10-20T23:19:58.606136" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:19:58.206627" elapsed="0.399576"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-10-20T23:19:58.205269" elapsed="0.401031"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:19:58.606763" level="INFO">Executing command 'sudo mn -c'.</msg>
<msg time="2026-10-20T23:19:59.826018" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:19:59.826370" level="INFO">${stdout} = </msg>
<msg time="2026-10-20T23:19:59.826470" 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-10-20T23:19:58.606571" elapsed="1.219952"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:19:59.826978" elapsed="0.000496"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:59.828633" 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-10-20T23:19:59.828025" 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-10-20T23:19:59.829277" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:19:59.829035" elapsed="0.000378"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:59.828987" elapsed="0.000474"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-10-20T23:19:59.829757" elapsed="0.000059"/>
</return>
<status status="PASS" start="2026-10-20T23:19:59.829573" elapsed="0.000334"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:59.829540" elapsed="0.000419"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:19:59.830032" elapsed="0.000029"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:19:59.832040" elapsed="0.000685"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-20T23:19:59.833162" elapsed="0.000348"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:19:59.833831" elapsed="0.000225"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-10-20T23:19:59.830726" elapsed="0.003437"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-10-20T23:19:58.202748" elapsed="1.631604"/>
</kw>
<msg time="2026-10-20T23:19:59.834465" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:19:58.202200" elapsed="1.632370"/>
</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-10-20T23:19:58.201609" elapsed="1.633119"/>
</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 or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:19:59.838894" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:19:59.838288" elapsed="0.000728"/>
</branch>
<status status="PASS" start="2026-10-20T23:19:59.838249" elapsed="0.000819"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:19:59.839803" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-10-20T23:19:59.839527" elapsed="0.000558"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:19:59.841203" 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.219" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:19:59.840532" elapsed="0.000769"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:19:59.842437" level="INFO">${conn_id} = 3</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-20T23:19:59.841726" elapsed="0.000766"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-20T23:19:59.844391" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:19:59.844548" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-20T23:19:59.843782" elapsed="0.000817"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:19:59.844956" elapsed="0.000677"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:19:59.847439" level="INFO">Logging into '10.30.170.219:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:20:00.250662" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Tue Oct 20 23:19:53 UTC 2026

  System load:  0.04               Processes:             110
  Usage of /:   19.8% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.219
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

5 updates can be applied immediately.
To see these additional updates run: apt list --upgradable

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


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


Last login: Tue Oct 20 23:19:58 2026 from 10.30.170.114
[?2004h[jenkins@releng-34016-79-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-10-20T23:19:59.846895" elapsed="0.403890"/>
</kw>
<msg time="2026-10-20T23:20:00.250930" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:19:59.846022" elapsed="0.404979"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-10-20T23:19:59.842952" elapsed="0.408144"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:20:00.251549" 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-10-20T23:20:00.294559" level="INFO">Command exited with return code -1.</msg>
<msg time="2026-10-20T23:20:00.294781" level="INFO">${stdout} = </msg>
<msg time="2026-10-20T23:20:00.294868" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:20:00.251357" elapsed="0.043586"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:20:00.295288" elapsed="0.000819"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:20:00.297238" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:20:00.296662" elapsed="0.000690"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:20:00.297741" elapsed="0.000034"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:20:00.297508" elapsed="0.000333"/>
</branch>
<status status="PASS" start="2026-10-20T23:20:00.297462" 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-10-20T23:20:00.298206" elapsed="0.000055"/>
</return>
<status status="PASS" start="2026-10-20T23:20:00.298024" elapsed="0.000337"/>
</branch>
<status status="PASS" start="2026-10-20T23:20:00.297991" elapsed="0.000423"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:20:00.298483" 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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:20:00.300092" elapsed="0.000667"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-20T23:20:00.301192" elapsed="0.000342"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:20:00.301850" elapsed="0.000224"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-10-20T23:20:00.299159" elapsed="0.003021"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-10-20T23:19:59.837298" elapsed="0.465066"/>
</kw>
<msg time="2026-10-20T23:20:00.302471" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:19:59.836099" elapsed="0.466474"/>
</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-10-20T23:19:59.835105" elapsed="0.467620"/>
</kw>
<arg>${mininet}</arg>
<status status="PASS" start="2026-10-20T23:19:58.201268" elapsed="2.101566"/>
</kw>
<kw name="Open_Connection_To_Tools_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:20:00.307870" level="INFO">${tools_connection} = 5</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-10-20T23:20:00.307186" elapsed="0.000763"/>
</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-10-20T23:20:00.311559" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:20:00.311713" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-20T23:20:00.310973" elapsed="0.000789"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:20:00.312120" elapsed="0.000666"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:20:00.314589" level="INFO">Logging into '10.30.170.219:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:20:00.730354" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Tue Oct 20 23:19:53 UTC 2026

  System load:  0.04               Processes:             110
  Usage of /:   19.8% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.219
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

5 updates can be applied immediately.
To see these additional updates run: apt list --upgradable

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


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


Last login: Tue Oct 20 23:20:00 2026 from 10.30.170.114
[?2004h[jenkins@releng-34016-79-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-10-20T23:20:00.314045" elapsed="0.416507"/>
</kw>
<msg time="2026-10-20T23:20:00.730625" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:20:00.313173" elapsed="0.417523"/>
</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-10-20T23:20:00.309973" elapsed="0.420823"/>
</kw>
<msg time="2026-10-20T23:20:00.730843" 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-10-20T23:20:00.309116" elapsed="0.421770"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-10-20T23:20:00.308331" elapsed="0.422638"/>
</kw>
<return>
<value>${tools_connection}</value>
<status status="PASS" start="2026-10-20T23:20:00.731015" elapsed="0.000036"/>
</return>
<msg time="2026-10-20T23:20:00.731191" level="INFO">${mininet_conn_id} = 5</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-10-20T23:20:00.306141" elapsed="0.425073"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-20T23:20:00.732176" level="INFO">${mininet_conn_id} = 5</msg>
<arg>${mininet_conn_id}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-20T23:20:00.731540" elapsed="0.000678"/>
</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-10-20T23:20:00.732617" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:00.732290" elapsed="0.000378"/>
</branch>
<status status="PASS" start="2026-10-20T23:20:00.732270" elapsed="0.000422"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:20:00.733192" level="INFO">Start mininet --topo linear,3 to 10.30.170.223</msg>
<arg>Start mininet ${options} to ${controller}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:20:00.732934" elapsed="0.000301"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-20T23:20:00.735911" level="INFO">sudo mn --controller 'remote,ip=10.30.170.223,port=6633' --topo linear,3 --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-10-20T23:20:00.733414" elapsed="0.002549"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-10-20T23:20:01.101476" level="INFO">[?2004l*** 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
c0 
*** 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-10-20T23:20:00.736121" elapsed="0.365461"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:20:01.102215" 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-10-20T23:20:01.101897" elapsed="0.000361"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-20T23:20:01.104018" 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-10-20T23:20:01.102444" elapsed="0.001624"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-10-20T23:20:01.123806" level="INFO">107600c3-66af-48f0-9450-39adc6e35b8d
    Bridge s2
        Controller "ptcp:6655"
        Controller "tcp:10.30.170.223:6633"
        fail_mode: secure
        Port s2
            Interface s2
                type: internal
        Port s2-eth1
            Interface s2-eth1
        Port s2-eth2
            Interface s2-eth2
        Port s2-eth3
            Interface s2-eth3
    Bridge s1
        Controller "ptcp:6654"
        Controller "tcp:10.30.170.223:6633"
        fail_mode: secure
        Port s1
            Interface s1
                type: internal
        Port s1-eth2
            Interface s1-eth2
        Port s1-eth1
            Interface s1-eth1
    Bridge s3
        Controller "ptcp:6656"
        Controller "tcp:10.30.170.223:6633"
        fail_mode: secure
        Port s3-eth2
            Interface s3-eth2
        Port s3-eth1
            Interface s3-eth1
        Port s3
            Interface s3
                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-10-20T23:20:01.104226" elapsed="0.019642"/>
</kw>
<return>
<value>${mininet_conn_id}</value>
<status status="PASS" start="2026-10-20T23:20:01.123926" elapsed="0.000039"/>
</return>
<arg>options=--topo linear,${switches}</arg>
<arg>ofversion=${ofversion}</arg>
<arg>ofport=${ofport}</arg>
<arg>timeout=${mininet_timeout}</arg>
<doc>Start Mininet with custom topology and connect to controller.</doc>
<status status="PASS" start="2026-10-20T23:19:58.200159" elapsed="2.923908"/>
</kw>
<arg>${SWITCHES}</arg>
<doc>Start mininet linear topology with 3 nodes.</doc>
<status status="PASS" start="2026-10-20T23:19:58.199117" elapsed="2.925014"/>
</kw>
<doc>Start Mininet Linear with 3 switches.</doc>
<status status="PASS" start="2026-10-20T23:19:58.198630" elapsed="2.925621"/>
</test>
<test id="s1-s5-s1-t5" name="Check Linear Topology" line="61">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:20:01.129856" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:20:01.129922" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:20:01.130085" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:20:01.126089" elapsed="0.004462">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:20:01.130802" elapsed="0.000021"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:01.131235" elapsed="0.000021"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:01.131454" elapsed="0.000020"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:01.131655" elapsed="0.000019"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:01.131852" elapsed="0.000019"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:01.132065" elapsed="0.000018"/>
</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-10-20T23:20:01.132271" elapsed="0.000019"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:01.132562" elapsed="0.000018"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:01.132375" elapsed="0.000237"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:01.132356" elapsed="0.000280"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:01.132862" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:01.132686" elapsed="0.000242"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:01.132671" elapsed="0.000280"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:01.133175" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:01.133000" elapsed="0.000225"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:01.132985" elapsed="0.000261"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:20:01.131059" elapsed="0.002209"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:20:01.130875" elapsed="0.002417"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:20:01.125754" elapsed="0.007645">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:20:02.141181" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:20:02.141301" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:20:02.141559" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:20:02.135422" elapsed="0.007025">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:20:02.143079" elapsed="0.000050"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:02.144543" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:02.145052" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:02.145541" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:02.146014" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:02.146506" elapsed="0.000042"/>
</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-10-20T23:20:02.147073" elapsed="0.000044"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:02.147697" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:02.147263" elapsed="0.000546"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:02.147224" elapsed="0.000640"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:02.148422" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:02.148000" elapsed="0.000536"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:02.147964" elapsed="0.000623"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:02.149110" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:02.148696" elapsed="0.000527"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:02.148664" elapsed="0.000608"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:20:02.144104" elapsed="0.005247"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:20:02.143236" elapsed="0.006171"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:20:02.134574" elapsed="0.015036">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:20:03.157053" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:20:03.157170" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:20:03.157428" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:20:03.151472" elapsed="0.006787">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:20:03.158844" elapsed="0.000049"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:03.159796" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:03.160268" elapsed="0.000069"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:03.160740" elapsed="0.000041"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:03.161202" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:03.161668" elapsed="0.000041"/>
</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-10-20T23:20:03.162134" elapsed="0.000041"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:03.162734" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:03.162340" elapsed="0.000503"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:03.162276" elapsed="0.000618"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:03.163441" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:03.163024" elapsed="0.000530"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:03.162991" elapsed="0.000612"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:03.164115" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:03.163708" elapsed="0.000519"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:03.163677" elapsed="0.000598"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:20:03.159415" elapsed="0.004942"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:20:03.159022" elapsed="0.005388"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:20:03.150681" elapsed="0.013920">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:20:04.172418" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:20:04.172537" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:20:04.172739" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:20:04.166524" elapsed="0.007068">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:20:04.174172" elapsed="0.000049"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:04.175129" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:04.175612" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:04.176071" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:04.176540" elapsed="0.000041"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:04.176977" elapsed="0.000062"/>
</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-10-20T23:20:04.177479" elapsed="0.000041"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:04.178077" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:04.177664" elapsed="0.000526"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:04.177625" elapsed="0.000617"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:04.178774" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:04.178383" elapsed="0.000501"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:04.178348" elapsed="0.000586"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:04.179477" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:04.179061" elapsed="0.000527"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:04.179028" elapsed="0.000609"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:20:04.174724" elapsed="0.004961"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:20:04.174353" elapsed="0.005383"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:20:04.165746" elapsed="0.014180">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:20:05.189921" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:20:05.190065" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:20:05.190284" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:20:05.184642" elapsed="0.006539">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:20:05.191842" elapsed="0.000050"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:05.192811" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:05.193289" elapsed="0.000072"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:05.193767" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:05.194253" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:05.194729" elapsed="0.000042"/>
</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-10-20T23:20:05.195203" elapsed="0.000042"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:05.195813" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:05.195417" elapsed="0.000509"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:05.195378" elapsed="0.000600"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:05.196534" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:05.196113" elapsed="0.000537"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:05.196079" elapsed="0.000620"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:05.197220" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:05.196807" elapsed="0.000554"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:05.196775" elapsed="0.000637"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:20:05.192425" elapsed="0.005036"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:20:05.191995" elapsed="0.005519"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:20:05.183840" elapsed="0.013868">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:20:06.205386" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:20:06.205516" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:20:06.205719" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:20:06.199561" elapsed="0.007021">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:20:06.207176" elapsed="0.000050"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:06.208125" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:06.208610" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:06.209048" elapsed="0.000063"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:06.209536" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:06.209973" elapsed="0.000041"/>
</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-10-20T23:20:06.210500" elapsed="0.000043"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:06.211152" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:06.210684" elapsed="0.000715"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:06.210645" elapsed="0.000816"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:06.211979" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:06.211579" elapsed="0.000536"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:06.211544" elapsed="0.000622"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:06.212701" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:06.212275" elapsed="0.000538"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:06.212243" elapsed="0.000619"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:20:06.207722" elapsed="0.005189"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:20:06.207360" elapsed="0.005604"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:20:06.198781" elapsed="0.014400">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:20:07.220670" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:20:07.220789" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:20:07.220995" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:20:07.215120" elapsed="0.006739">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:20:07.222481" elapsed="0.000050"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:07.223922" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:07.224435" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:07.224882" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:07.225366" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:07.225813" elapsed="0.000042"/>
</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-10-20T23:20:07.226291" elapsed="0.000070"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:07.226907" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:07.226511" elapsed="0.000507"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:07.226473" elapsed="0.000599"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:07.227649" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:07.227207" elapsed="0.000555"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:07.227174" elapsed="0.000639"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:07.228359" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:07.227921" elapsed="0.000554"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:07.227890" elapsed="0.000634"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:20:07.223520" elapsed="0.005053"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:20:07.222639" elapsed="0.005987"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:20:07.214298" elapsed="0.014522">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:20:08.236227" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:20:08.236479" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:20:08.236690" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:20:08.230661" elapsed="0.006886">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:20:08.238171" elapsed="0.000056"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:08.239161" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:08.239648" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:08.240089" elapsed="0.000060"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:08.240588" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:08.241031" elapsed="0.000041"/>
</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-10-20T23:20:08.241534" elapsed="0.000043"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:08.242133" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:08.241718" elapsed="0.000529"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:08.241680" elapsed="0.000619"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:08.242831" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:08.242437" elapsed="0.000504"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:08.242405" elapsed="0.000585"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:08.243682" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:08.243094" elapsed="0.000713"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:08.243063" elapsed="0.000794"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:20:08.238753" elapsed="0.005153"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:20:08.238382" elapsed="0.005576"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:20:08.229880" elapsed="0.014298">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:20:09.252116" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:20:09.252259" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:20:09.252510" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:20:09.246113" elapsed="0.007336">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:20:09.254075" elapsed="0.000057"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:09.255059" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:09.255565" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:09.256103" elapsed="0.000062"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:09.256599" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:09.257040" elapsed="0.000042"/>
</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-10-20T23:20:09.257543" elapsed="0.000042"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:09.258173" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:09.257730" elapsed="0.000571"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:09.257691" elapsed="0.000693"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:09.258895" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:09.258498" elapsed="0.000508"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:09.258465" elapsed="0.000591"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:09.259609" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:09.259189" elapsed="0.000532"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:09.259131" elapsed="0.000640"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:20:09.254673" elapsed="0.005146"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:20:09.254273" elapsed="0.005602"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:20:09.245284" elapsed="0.014800">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:20:10.268047" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:20:10.268163" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:20:10.268455" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:20:10.262405" elapsed="0.006889">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:20:10.269879" elapsed="0.000048"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:10.270824" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:10.271343" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:10.271786" elapsed="0.000040"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:10.272245" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:10.272712" elapsed="0.000045"/>
</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-10-20T23:20:10.273164" elapsed="0.000065"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:10.273789" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:10.273396" elapsed="0.000502"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:10.273357" elapsed="0.000595"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:10.274493" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:10.274060" elapsed="0.000546"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:10.274027" elapsed="0.000701"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:10.275260" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:10.274846" elapsed="0.000555"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:10.274813" elapsed="0.000638"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:20:10.270442" elapsed="0.005058"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:20:10.270029" elapsed="0.005523"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:20:10.261619" elapsed="0.014124">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:20:11.283086" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:20:11.283251" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:20:11.283509" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:20:11.277536" elapsed="0.006827">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:20:11.284921" elapsed="0.000049"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:11.285873" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:11.286380" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:11.286823" elapsed="0.000041"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:11.287281" elapsed="0.000068"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:11.287746" elapsed="0.000041"/>
</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-10-20T23:20:11.288193" elapsed="0.000062"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:11.288822" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:11.288431" elapsed="0.000499"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:11.288390" elapsed="0.000591"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:11.289520" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:11.289089" elapsed="0.000542"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:11.289057" elapsed="0.000623"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:11.290167" elapsed="0.000062"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:11.289786" elapsed="0.000514"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:11.289754" elapsed="0.000623"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:20:11.285489" elapsed="0.004936"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:20:11.285071" elapsed="0.005405"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:20:11.276757" elapsed="0.013911">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:20:12.298139" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:20:12.298278" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:20:12.298598" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:20:12.292457" elapsed="0.007383">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:20:12.300623" elapsed="0.000052"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:12.301570" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:12.302028" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:12.302516" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:12.302958" elapsed="0.000040"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:12.303450" elapsed="0.000043"/>
</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-10-20T23:20:12.303907" elapsed="0.000042"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:12.304582" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:12.304089" elapsed="0.000608"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:12.304051" elapsed="0.000699"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:12.305278" elapsed="0.000069"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:12.304859" elapsed="0.000560"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:12.304827" elapsed="0.000642"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:12.305962" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:12.305575" elapsed="0.000496"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:12.305544" elapsed="0.000575"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:20:12.301141" elapsed="0.005026"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:20:12.300777" elapsed="0.005440"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:20:12.291702" elapsed="0.014806">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:20:13.314053" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:20:13.314174" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:20:13.314446" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:20:13.308580" elapsed="0.006772">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:20:13.315937" elapsed="0.000049"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:13.316914" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:13.317422" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:13.317870" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:13.318383" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:13.318834" elapsed="0.000041"/>
</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-10-20T23:20:13.319424" elapsed="0.000047"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:13.320023" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:13.319623" elapsed="0.000513"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:13.319581" elapsed="0.000610"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:13.320754" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:13.320355" elapsed="0.000514"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:13.320294" elapsed="0.000625"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:13.321465" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:13.321029" elapsed="0.000552"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:13.320996" elapsed="0.000634"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:20:13.316526" elapsed="0.005155"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:20:13.316092" elapsed="0.005642"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:20:13.307734" elapsed="0.014198">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:20:14.329267" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:20:14.329439" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:20:14.329644" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:20:14.323757" elapsed="0.006803">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:20:14.331109" elapsed="0.000048"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:14.332056" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:14.332549" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:14.332985" elapsed="0.000041"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:14.333455" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:14.333890" elapsed="0.000040"/>
</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-10-20T23:20:14.334373" elapsed="0.000050"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:14.335411" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:14.334946" elapsed="0.000590"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:14.334544" elapsed="0.001046"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:14.336101" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:14.335702" elapsed="0.000512"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:14.335669" elapsed="0.000594"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:14.336834" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:14.336444" elapsed="0.000501"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:14.336409" elapsed="0.000587"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:20:14.331679" elapsed="0.005366"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:20:14.331258" elapsed="0.005840"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:20:14.322986" elapsed="0.014346">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:20:15.344533" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:20:15.344649" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:20:15.344851" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:20:15.339180" elapsed="0.006527">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:20:15.346257" elapsed="0.000102"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:15.347214" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:15.347720" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:15.348165" elapsed="0.000041"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:15.348648" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:15.349087" elapsed="0.000040"/>
</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-10-20T23:20:15.349586" elapsed="0.000043"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:15.350166" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:15.349769" elapsed="0.000506"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:15.349732" elapsed="0.000803"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:15.351055" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:15.350660" elapsed="0.000506"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:15.350626" elapsed="0.000589"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:15.351764" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:15.351373" elapsed="0.000501"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:15.351291" elapsed="0.000632"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:20:15.346832" elapsed="0.005137"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:20:15.346466" elapsed="0.005555"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:20:15.338455" elapsed="0.013756">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:20:16.359413" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:20:16.359536" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:20:16.359739" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:20:16.353966" elapsed="0.006621">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:20:16.361201" elapsed="0.000050"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:16.362189" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:16.362695" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:16.363137" elapsed="0.000041"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:16.363651" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:16.364096" elapsed="0.000042"/>
</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-10-20T23:20:16.364605" elapsed="0.000044"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:16.365184" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:16.364790" elapsed="0.000504"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:16.364752" elapsed="0.000644"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:16.365900" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:16.365509" elapsed="0.000502"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:16.365476" elapsed="0.000584"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:16.366607" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:16.366167" elapsed="0.000553"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:16.366135" elapsed="0.000634"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:20:16.361782" elapsed="0.005035"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:20:16.361411" elapsed="0.005458"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:20:16.353186" elapsed="0.013873">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:20:17.375482" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:20:17.375604" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:20:17.375837" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:20:17.369628" elapsed="0.007107">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:20:17.377344" elapsed="0.000068"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:17.378286" elapsed="0.000077"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:17.378796" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:17.379235" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:17.379725" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:17.380164" elapsed="0.000042"/>
</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-10-20T23:20:17.380665" elapsed="0.000043"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:17.381251" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:17.380853" elapsed="0.000644"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:17.380814" elapsed="0.000740"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:17.382061" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:17.381667" elapsed="0.000504"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:17.381635" elapsed="0.000586"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:17.382770" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:17.382359" elapsed="0.000522"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:17.382296" elapsed="0.000634"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:20:17.377902" elapsed="0.005076"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:20:17.377521" elapsed="0.005511"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:20:17.368242" elapsed="0.014985">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:20:18.391094" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:20:18.391214" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:20:18.391494" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:20:18.385284" elapsed="0.007099">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:20:18.392975" elapsed="0.000047"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:18.393938" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:18.394427" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:18.394864" elapsed="0.000040"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:18.395294" elapsed="0.000068"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:18.395777" elapsed="0.000040"/>
</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-10-20T23:20:18.396224" elapsed="0.000041"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:18.396844" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:18.396451" elapsed="0.000502"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:18.396397" elapsed="0.000609"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:18.397545" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:18.397115" elapsed="0.000541"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:18.397082" elapsed="0.000624"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:18.398199" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:18.397812" elapsed="0.000523"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:18.397780" elapsed="0.000607"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:20:18.393555" elapsed="0.004896"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:20:18.393127" elapsed="0.005377"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:20:18.384467" elapsed="0.014232">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:20:19.406603" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:20:19.406818" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:20:19.407037" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:20:19.400842" elapsed="0.007106">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:20:19.408630" elapsed="0.000055"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:19.410098" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:19.410622" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:19.411075" elapsed="0.000041"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:19.411564" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:19.412064" elapsed="0.000044"/>
</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-10-20T23:20:19.412604" elapsed="0.000046"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:19.413243" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:19.412807" elapsed="0.000588"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:19.412765" elapsed="0.000704"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:19.414024" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:19.413592" elapsed="0.000543"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:19.413556" elapsed="0.000629"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:19.414744" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:19.414294" elapsed="0.000563"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:19.414261" elapsed="0.000645"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:20:19.409702" elapsed="0.005253"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:20:19.408801" elapsed="0.006208"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:20:19.399945" elapsed="0.015264">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:20:20.423189" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:20:20.423347" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:20:20.423601" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:20:20.417344" elapsed="0.007182">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:20:20.425115" elapsed="0.000047"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:20.426115" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:20.426625" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:20.427224" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:20.427730" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:20.428177" elapsed="0.000041"/>
</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-10-20T23:20:20.428683" elapsed="0.000043"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:20.429288" elapsed="0.000069"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:20.428877" elapsed="0.000552"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:20.428836" elapsed="0.000667"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:20.430019" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:20.429622" elapsed="0.000510"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:20.429587" elapsed="0.000595"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:20.430744" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:20.430293" elapsed="0.000565"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:20.430260" elapsed="0.000648"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:20:20.425706" elapsed="0.005251"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:20:20.425270" elapsed="0.005741"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:20:20.416462" elapsed="0.014748">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:20:21.440745" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:20:21.440871" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:20:21.441097" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:20:21.433788" elapsed="0.008233">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:20:21.442679" elapsed="0.000051"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:21.443653" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:21.444121" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:21.444613" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:21.445058" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:21.445562" elapsed="0.000044"/>
</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-10-20T23:20:21.446032" elapsed="0.000042"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:21.446673" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:21.446220" elapsed="0.000565"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:21.446179" elapsed="0.000662"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:21.447370" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:21.446953" elapsed="0.000530"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:21.446920" elapsed="0.000743"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:21.448201" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:21.447803" elapsed="0.000545"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:21.447763" elapsed="0.000639"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:20:21.443214" elapsed="0.005239"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:20:21.442839" elapsed="0.005687"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:20:21.432696" elapsed="0.016030">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:20:22.456766" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:20:22.456888" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:20:22.457120" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:20:22.451224" elapsed="0.006794">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:20:22.458651" elapsed="0.000050"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:22.459612" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:22.460069" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:22.460559" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:22.461002" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:22.461480" elapsed="0.000042"/>
</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-10-20T23:20:22.461962" elapsed="0.000042"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:22.462595" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:22.462145" elapsed="0.000563"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:22.462108" elapsed="0.000653"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:22.463264" elapsed="0.000068"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:22.462872" elapsed="0.000532"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:22.462840" elapsed="0.000612"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:22.463977" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:22.463582" elapsed="0.000507"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:22.463548" elapsed="0.000591"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:20:22.459175" elapsed="0.005011"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:20:22.458808" elapsed="0.005429"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:20:22.450402" elapsed="0.014061">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:20:23.472260" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:20:23.472423" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:20:23.472763" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:20:23.466606" elapsed="0.007074">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:20:23.474273" elapsed="0.000083"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:23.475254" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:23.475769" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:23.476214" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:23.476702" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:23.477143" elapsed="0.000042"/>
</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-10-20T23:20:23.477646" elapsed="0.000045"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:23.478233" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:23.477838" elapsed="0.000537"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:23.477798" elapsed="0.000632"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:23.478950" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:23.478541" elapsed="0.000520"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:23.478508" elapsed="0.000603"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:23.479652" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:23.479218" elapsed="0.000547"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:23.479186" elapsed="0.000627"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:20:23.474867" elapsed="0.004993"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:20:23.474467" elapsed="0.005446"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:20:23.465733" elapsed="0.014378">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:20:24.488902" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:20:24.489025" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:20:24.489256" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:20:24.482237" elapsed="0.007921">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:20:24.490783" elapsed="0.000050"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:24.491760" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:24.492222" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:24.492716" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:24.493164" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:24.493678" elapsed="0.000043"/>
</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-10-20T23:20:24.494237" elapsed="0.000044"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:24.494887" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:24.494460" elapsed="0.000542"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:24.494419" elapsed="0.000637"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:24.495618" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:24.495168" elapsed="0.000565"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:24.495135" elapsed="0.000650"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:24.496290" elapsed="0.000071"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:24.495896" elapsed="0.000536"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:24.495863" elapsed="0.000619"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:20:24.491339" elapsed="0.005193"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:20:24.490938" elapsed="0.005646"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:20:24.481224" elapsed="0.015581">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:20:25.504204" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:20:25.504364" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:20:25.504580" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:20:25.498819" elapsed="0.006649">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:20:25.506065" elapsed="0.000050"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:25.507042" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:25.507523" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:25.507984" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:25.508469" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:25.508928" elapsed="0.000043"/>
</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-10-20T23:20:25.509409" elapsed="0.000043"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:25.510012" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:25.509597" elapsed="0.000528"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:25.509558" elapsed="0.000620"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:25.510724" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:25.510287" elapsed="0.000552"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:25.510255" elapsed="0.000633"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:25.511413" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:25.510996" elapsed="0.000529"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:25.510964" elapsed="0.000610"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:20:25.506655" elapsed="0.004984"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:20:25.506219" elapsed="0.005474"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:20:25.497963" elapsed="0.013927">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:20:26.519577" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:20:26.519726" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:20:26.519935" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:20:26.513918" elapsed="0.006900">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:20:26.521417" elapsed="0.000051"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:26.522376" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:26.522871" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:26.523344" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:26.524185" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:26.524694" elapsed="0.000044"/>
</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-10-20T23:20:26.525155" elapsed="0.000042"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:26.525794" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:26.525372" elapsed="0.000536"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:26.525303" elapsed="0.000659"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:26.526502" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:26.526078" elapsed="0.000536"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:26.526045" elapsed="0.000642"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:26.527195" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:26.526802" elapsed="0.000530"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:26.526769" elapsed="0.000617"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:20:26.521962" elapsed="0.005474"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:20:26.521572" elapsed="0.005917"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:20:26.513090" elapsed="0.014614">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:20:27.535172" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:20:27.535292" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:20:27.535548" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:20:27.529706" elapsed="0.006729">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:20:27.537129" elapsed="0.000051"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:27.538125" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:27.538618" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:27.539080" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:27.539567" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:27.540028" elapsed="0.000042"/>
</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-10-20T23:20:27.540507" elapsed="0.000044"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:27.541119" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:27.540719" elapsed="0.000512"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:27.540657" elapsed="0.000627"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:27.541840" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:27.541426" elapsed="0.000527"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:27.541392" elapsed="0.000610"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:27.542544" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:27.542109" elapsed="0.000548"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:27.542077" elapsed="0.000649"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:20:27.537734" elapsed="0.005041"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:20:27.537289" elapsed="0.005538"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:20:27.528853" elapsed="0.014169">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:20:28.551182" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:20:28.551346" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:20:28.551584" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:20:28.545344" elapsed="0.007198">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:20:28.553196" elapsed="0.000051"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:28.554179" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:28.554662" elapsed="0.000067"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:28.555139" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:28.555604" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:28.556062" elapsed="0.000042"/>
</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-10-20T23:20:28.556544" elapsed="0.000042"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:28.557152" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:28.556755" elapsed="0.000670"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:28.556694" elapsed="0.000792"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:28.558018" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:28.557600" elapsed="0.000530"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:28.557568" elapsed="0.000611"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:28.558728" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:28.558288" elapsed="0.000553"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:28.558256" elapsed="0.000634"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:20:28.553790" elapsed="0.005148"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:20:28.553390" elapsed="0.005603"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:20:28.544366" elapsed="0.014829">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:20:29.567629" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:20:29.567778" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:20:29.568011" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:20:29.561890" elapsed="0.007063">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:20:29.569577" elapsed="0.000050"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:29.570552" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:29.571031" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:29.571501" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:29.571965" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:29.572431" elapsed="0.000043"/>
</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-10-20T23:20:29.572906" elapsed="0.000042"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:29.573517" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:29.573094" elapsed="0.000537"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:29.573054" elapsed="0.000631"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:29.574212" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:29.573823" elapsed="0.000530"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:29.573787" elapsed="0.000620"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:29.574927" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:29.574515" elapsed="0.000523"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:29.574483" elapsed="0.000603"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:20:29.570137" elapsed="0.004997"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:20:29.569736" elapsed="0.005449"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:20:29.561014" elapsed="0.014400">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:20:30.583416" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:20:30.583624" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:20:30.583860" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:20:30.577599" elapsed="0.007194">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:20:30.585406" elapsed="0.000049"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:30.586382" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:30.586851" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:30.587282" elapsed="0.000065"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:30.587743" elapsed="0.000058"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:30.588189" elapsed="0.000040"/>
</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-10-20T23:20:30.588688" elapsed="0.000042"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:30.589286" elapsed="0.000068"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:30.588897" elapsed="0.000528"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:30.588856" elapsed="0.000622"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:30.589991" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:30.589587" elapsed="0.000514"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:30.589555" elapsed="0.000595"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:30.590662" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:30.590255" elapsed="0.000537"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:30.590223" elapsed="0.000619"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:20:30.585955" elapsed="0.004936"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:20:30.585560" elapsed="0.005382"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:20:30.576730" elapsed="0.014408">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:20:31.598957" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:20:31.599080" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:20:31.599791" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:20:31.593283" elapsed="0.007483">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:20:31.601416" elapsed="0.000051"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:31.602387" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:31.602887" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:31.603465" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:31.603933" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:31.604406" elapsed="0.000044"/>
</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-10-20T23:20:31.604909" elapsed="0.000044"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:31.605554" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:31.605100" elapsed="0.000569"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:31.605061" elapsed="0.000662"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:31.606247" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:31.605854" elapsed="0.000534"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:31.605820" elapsed="0.000619"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:31.606959" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:20:31.606548" elapsed="0.000525"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:20:31.606516" elapsed="0.000607"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:20:31.601976" elapsed="0.005196"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:20:31.601574" elapsed="0.005651"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:20:31.592399" elapsed="0.015054">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<msg time="2026-10-20T23:20:31.607639" level="FAIL">Keyword 'FlowLib.Check Linear Topology' failed after retrying for 30 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</msg>
<arg>30s</arg>
<arg>1s</arg>
<arg>FlowLib.Check Linear Topology</arg>
<arg>${SWITCHES}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-10-20T23:20:01.125046" elapsed="30.482810">Keyword 'FlowLib.Check Linear Topology' failed after retrying for 30 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<doc>Check Linear Topology.</doc>
<status status="FAIL" start="2026-10-20T23:20:01.124574" elapsed="30.483597">Keyword 'FlowLib.Check Linear Topology' failed after retrying for 30 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</test>
<test id="s1-s5-s1-t6" name="Check Flows In Operational DS" line="65">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:20:31.616831" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:20:31.616941" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:20:31.617132" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:20:31.611897" elapsed="0.006079">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:20:31.618543" elapsed="0.000048"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:31.618998" elapsed="0.000044"/>
</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="NOT RUN" start="2026-10-20T23:20:31.619483" elapsed="0.000044"/>
</kw>
<arg>${all_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:20:31.611159" elapsed="0.008554">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:20:32.627037" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:20:32.627156" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:20:32.627500" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:20:32.621576" elapsed="0.006834">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:20:32.629060" elapsed="0.000050"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:32.629538" elapsed="0.000050"/>
</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="NOT RUN" start="2026-10-20T23:20:32.630074" elapsed="0.000046"/>
</kw>
<arg>${all_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:20:32.620666" elapsed="0.009683">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:20:33.637748" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:20:33.637902" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:20:33.641056" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:20:33.632185" elapsed="0.009792">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:20:33.642582" elapsed="0.000051"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:33.643043" elapsed="0.000045"/>
</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="NOT RUN" start="2026-10-20T23:20:33.643536" elapsed="0.000044"/>
</kw>
<arg>${all_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:20:33.631270" elapsed="0.012503">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:20:34.651390" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:20:34.651517" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:20:34.651734" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:20:34.645527" elapsed="0.007113">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:20:34.653261" elapsed="0.000081"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:34.653728" elapsed="0.000044"/>
</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="NOT RUN" start="2026-10-20T23:20:34.654204" elapsed="0.000043"/>
</kw>
<arg>${all_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:20:34.644657" elapsed="0.009900">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:20:35.661950" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:20:35.662072" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:20:35.662350" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:20:35.656292" elapsed="0.006949">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:20:35.663869" elapsed="0.000049"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:35.664355" elapsed="0.000046"/>
</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="NOT RUN" start="2026-10-20T23:20:35.664813" elapsed="0.000042"/>
</kw>
<arg>${all_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:20:35.655439" elapsed="0.009628">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:20:36.672500" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:20:36.672629" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:20:36.672845" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:20:36.666813" elapsed="0.006949">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:20:36.674398" elapsed="0.000051"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:36.674831" elapsed="0.000044"/>
</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="NOT RUN" start="2026-10-20T23:20:36.675335" elapsed="0.000046"/>
</kw>
<arg>${all_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:20:36.665949" elapsed="0.009627">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:20:37.683460" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:20:37.683582" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:20:37.683797" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:20:37.677494" elapsed="0.007315">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:20:37.685459" elapsed="0.000053"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:37.685896" elapsed="0.000044"/>
</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="NOT RUN" start="2026-10-20T23:20:37.686404" elapsed="0.000045"/>
</kw>
<arg>${all_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:20:37.676567" elapsed="0.010081">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:20:38.694956" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:20:38.695112" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:20:38.695380" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:20:38.689169" elapsed="0.007097">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:20:38.696890" elapsed="0.000050"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:38.697374" elapsed="0.000046"/>
</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="NOT RUN" start="2026-10-20T23:20:38.697830" elapsed="0.000043"/>
</kw>
<arg>${all_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:20:38.687633" elapsed="0.010454">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:20:39.705433" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:20:39.705564" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:20:39.705781" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:20:39.699898" elapsed="0.006794">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:20:39.707304" elapsed="0.000087"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:39.707774" elapsed="0.000043"/>
</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="NOT RUN" start="2026-10-20T23:20:39.708250" elapsed="0.000043"/>
</kw>
<arg>${all_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:20:39.698971" elapsed="0.009549">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:20:40.716040" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:20:40.716188" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:20:40.716547" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:20:40.710331" elapsed="0.007121">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:20:40.718037" elapsed="0.000078"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:40.718537" elapsed="0.000043"/>
</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="NOT RUN" start="2026-10-20T23:20:40.718995" elapsed="0.000041"/>
</kw>
<arg>${all_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:20:40.709462" elapsed="0.009789">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:20:41.726883" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:20:41.727006" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:20:41.727250" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:20:41.720969" elapsed="0.007168">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:20:41.728751" elapsed="0.000050"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:41.729205" elapsed="0.000045"/>
</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="NOT RUN" start="2026-10-20T23:20:41.729696" elapsed="0.000043"/>
</kw>
<arg>${all_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:20:41.720096" elapsed="0.009835">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:20:42.738079" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:20:42.738226" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:20:42.738500" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:20:42.731712" elapsed="0.007694">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:20:42.739979" elapsed="0.000049"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:42.740465" elapsed="0.000044"/>
</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="NOT RUN" start="2026-10-20T23:20:42.740927" elapsed="0.000043"/>
</kw>
<arg>${all_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:20:42.730859" elapsed="0.010327">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:20:43.748420" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:20:43.748634" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:20:43.748856" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:20:43.742874" elapsed="0.006880">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:20:43.750392" elapsed="0.000052"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:43.750826" elapsed="0.000042"/>
</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="NOT RUN" start="2026-10-20T23:20:43.751303" elapsed="0.000071"/>
</kw>
<arg>${all_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:20:43.741991" elapsed="0.009578">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:20:44.759459" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:20:44.759581" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:20:44.759794" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:20:44.753456" elapsed="0.007222">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:20:44.761277" elapsed="0.000079"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:44.761743" elapsed="0.000044"/>
</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="NOT RUN" start="2026-10-20T23:20:44.762223" elapsed="0.000044"/>
</kw>
<arg>${all_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:20:44.752620" elapsed="0.009867">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:20:45.769651" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:20:45.769773" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:20:45.769985" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:20:45.764154" elapsed="0.006711">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:20:45.771493" elapsed="0.000051"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:45.771928" elapsed="0.000042"/>
</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="NOT RUN" start="2026-10-20T23:20:45.772432" elapsed="0.000127"/>
</kw>
<arg>${all_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:20:45.763354" elapsed="0.009408">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:20:46.780002" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:20:46.780122" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:20:46.780396" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:20:46.774456" elapsed="0.006772">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:20:46.782019" elapsed="0.000072"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:46.782663" elapsed="0.000048"/>
</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="NOT RUN" start="2026-10-20T23:20:46.783127" elapsed="0.000042"/>
</kw>
<arg>${all_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:20:46.773627" elapsed="0.009831">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:20:47.791149" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:20:47.791271" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:20:47.791569" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:20:47.785757" elapsed="0.006699">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:20:47.793033" elapsed="0.000049"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:47.793515" elapsed="0.000045"/>
</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="NOT RUN" start="2026-10-20T23:20:47.793976" elapsed="0.000041"/>
</kw>
<arg>${all_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:20:47.784917" elapsed="0.009291">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:20:48.801668" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:20:48.801789" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:20:48.802003" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:20:48.796068" elapsed="0.006936">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:20:48.803652" elapsed="0.000055"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:48.804095" elapsed="0.000044"/>
</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="NOT RUN" start="2026-10-20T23:20:48.804606" elapsed="0.000043"/>
</kw>
<arg>${all_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:20:48.795135" elapsed="0.009710">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:20:49.812469" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:20:49.812594" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:20:49.812812" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:20:49.806743" elapsed="0.006972">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:20:49.814381" elapsed="0.000052"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:49.814830" elapsed="0.000042"/>
</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="NOT RUN" start="2026-10-20T23:20:49.815286" elapsed="0.000099"/>
</kw>
<arg>${all_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:20:49.805822" elapsed="0.009763">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:20:50.822997" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:20:50.823117" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:20:50.823375" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:20:50.817400" elapsed="0.006861">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:20:50.824910" elapsed="0.000049"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:50.825374" elapsed="0.000060"/>
</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="NOT RUN" start="2026-10-20T23:20:50.825857" elapsed="0.000043"/>
</kw>
<arg>${all_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:20:50.816531" elapsed="0.009561">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:20:51.834005" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:20:51.834127" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:20:51.834530" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:20:51.827898" elapsed="0.007537">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:20:51.836018" elapsed="0.000048"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:51.836499" elapsed="0.000045"/>
</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="NOT RUN" start="2026-10-20T23:20:51.836962" elapsed="0.000042"/>
</kw>
<arg>${all_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:20:51.827000" elapsed="0.010198">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:20:52.844739" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:20:52.844860" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:20:52.845078" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:20:52.838926" elapsed="0.007043">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:20:52.846611" elapsed="0.000051"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:52.847050" elapsed="0.000043"/>
</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="NOT RUN" start="2026-10-20T23:20:52.847554" elapsed="0.000043"/>
</kw>
<arg>${all_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:20:52.838047" elapsed="0.009743">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:20:53.855093" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:20:53.855224" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:20:53.855500" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:20:53.849618" elapsed="0.006807">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:20:53.857157" elapsed="0.000051"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:53.857653" elapsed="0.000046"/>
</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="NOT RUN" start="2026-10-20T23:20:53.858118" elapsed="0.000042"/>
</kw>
<arg>${all_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:20:53.848723" elapsed="0.009665">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:20:54.865839" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:20:54.866056" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:20:54.866275" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:20:54.860102" elapsed="0.007080">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:20:54.867830" elapsed="0.000050"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:54.868265" elapsed="0.000070"/>
</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="NOT RUN" start="2026-10-20T23:20:54.868776" elapsed="0.000043"/>
</kw>
<arg>${all_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:20:54.859222" elapsed="0.009793">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:20:55.876726" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:20:55.876853" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:20:55.877071" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:20:55.870896" elapsed="0.007086">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:20:55.878630" elapsed="0.000051"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:55.879063" elapsed="0.000043"/>
</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="NOT RUN" start="2026-10-20T23:20:55.880123" elapsed="0.000049"/>
</kw>
<arg>${all_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:20:55.869974" elapsed="0.010428">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:20:56.886966" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:20:56.887081" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:20:56.887281" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:20:56.881894" elapsed="0.006239">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:20:56.888746" elapsed="0.000050"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:56.889179" elapsed="0.000043"/>
</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="NOT RUN" start="2026-10-20T23:20:56.889684" elapsed="0.000124"/>
</kw>
<arg>${all_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:20:56.881109" elapsed="0.008898">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:20:57.897053" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:20:57.897168" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:20:57.897406" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:20:57.891513" elapsed="0.006719">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:20:57.898836" elapsed="0.000050"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:57.899265" elapsed="0.000073"/>
</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="NOT RUN" start="2026-10-20T23:20:57.899776" elapsed="0.000043"/>
</kw>
<arg>${all_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:20:57.890768" elapsed="0.009235">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:20:58.907008" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:20:58.907123" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:20:58.907362" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:20:58.901515" elapsed="0.006685">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:20:58.908820" elapsed="0.000051"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:58.909253" elapsed="0.000044"/>
</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="NOT RUN" start="2026-10-20T23:20:58.909764" elapsed="0.000044"/>
</kw>
<arg>${all_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:20:58.900755" elapsed="0.009240">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:20:59.917274" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:20:59.917431" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:20:59.917641" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:20:59.911648" elapsed="0.006945">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:20:59.919183" elapsed="0.000049"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:20:59.919657" elapsed="0.000067"/>
</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="NOT RUN" start="2026-10-20T23:20:59.920135" elapsed="0.000042"/>
</kw>
<arg>${all_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:20:59.910853" elapsed="0.009543">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:21:00.928884" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:21:00.929004" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:21:00.929237" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:21:00.922869" elapsed="0.007275">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:21:00.930784" elapsed="0.000051"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:00.931219" elapsed="0.000043"/>
</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="NOT RUN" start="2026-10-20T23:21:00.931725" elapsed="0.000045"/>
</kw>
<arg>${all_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:21:00.921268" elapsed="0.010697">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:21:01.939758" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:21:01.939881" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:21:01.940092" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:21:01.933653" elapsed="0.007331">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:21:01.941588" elapsed="0.000050"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:01.942042" elapsed="0.000044"/>
</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="NOT RUN" start="2026-10-20T23:21:01.942529" elapsed="0.000043"/>
</kw>
<arg>${all_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:21:01.932833" elapsed="0.009952">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<msg time="2026-10-20T23:21:01.942971" level="FAIL">Keyword 'FlowLib.Check Number Of Flows' failed after retrying for 30 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</msg>
<arg>30s</arg>
<arg>1s</arg>
<arg>FlowLib.Check Number Of Flows</arg>
<arg>${all_flows}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-10-20T23:20:31.609938" elapsed="30.333221">Keyword 'FlowLib.Check Number Of Flows' failed after retrying for 30 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<doc>Check Groups after mininet starts.</doc>
<status status="FAIL" start="2026-10-20T23:20:31.608867" elapsed="30.334724">Keyword 'FlowLib.Check Number Of Flows' failed after retrying for 30 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</test>
<test id="s1-s5-s1-t7" name="Check Groups In Operational DS" line="69">
<kw name="Check Number Of Groups" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:21:01.951513" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:21:01.951627" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:21:01.951857" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:21:01.946139" elapsed="0.006582">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:21:01.953286" elapsed="0.000083"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${group_count}</var>
<arg>${resp.text}</arg>
<arg>"group-type"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:01.953772" elapsed="0.000045"/>
</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="NOT RUN" start="2026-10-20T23:21:01.954232" elapsed="0.000054"/>
</kw>
<arg>${all_groups}</arg>
<doc>Check number of groups in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:21:01.945199" elapsed="0.009303">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<doc>Check Flows after mininet starts.</doc>
<status status="FAIL" start="2026-10-20T23:21:01.944028" elapsed="0.010764">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</test>
<test id="s1-s5-s1-t8" name="Check Flows In Switch" line="73">
<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-10-20T23:21:01.958271" elapsed="0.000323"/>
</kw>
<status status="PASS" start="2026-10-20T23:21:01.957762" elapsed="0.000911"/>
</branch>
<status status="PASS" start="2026-10-20T23:21:01.957687" elapsed="0.001065"/>
</if>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:21:01.959853" 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 variable.</doc>
<status status="PASS" start="2026-10-20T23:21:01.959151" elapsed="0.000759"/>
</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-10-20T23:21:01.961643" elapsed="0.000263"/>
</kw>
<status status="PASS" start="2026-10-20T23:21:01.961154" elapsed="0.000828"/>
</branch>
<status status="PASS" start="2026-10-20T23:21:01.961116" elapsed="0.000919"/>
</if>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-20T23:21:01.966925" 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-10-20T23:21:01.962383" elapsed="0.004665"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-10-20T23:21:02.066939" level="INFO">*** s1 ------------------------------------------------------------------------
OFPST_AGGREGATE reply (OF1.3) (xid=0x2): packet_count=39 byte_count=3077 flow_count=4
*** s2 ------------------------------------------------------------------------
OFPST_AGGREGATE reply (OF1.3) (xid=0x2): packet_count=53 byte_count=4278 flow_count=5
*** s3 ------------------------------------------------------------------------
OFPST_AGGREGATE reply (OF1.3) (xid=0x2): packet_count=37 byte_count=2921 flow_count=4
mininet&gt;</msg>
<msg time="2026-10-20T23:21:02.067039" level="INFO">${output} = *** s1 ------------------------------------------------------------------------
OFPST_AGGREGATE reply (OF1.3) (xid=0x2): packet_count=39 byte_count=3077 flow_count=4
*** 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-10-20T23:21:01.967473" elapsed="0.099593"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-20T23:21:02.067117" elapsed="0.000033"/>
</return>
<msg time="2026-10-20T23:21:02.067256" level="INFO">${output} = *** s1 ------------------------------------------------------------------------
OFPST_AGGREGATE reply (OF1.3) (xid=0x2): packet_count=39 byte_count=3077 flow_count=4
*** s2 ------------------------...</msg>
<var>${output}</var>
<arg>${mininet_conn}</arg>
<arg>${cmd}</arg>
<doc>Sends Command dpctl dump-aggregate -O OpenFlow13 to Mininet session 5 and returns read buffer response.</doc>
<status status="PASS" start="2026-10-20T23:21:01.960546" elapsed="0.106736"/>
</kw>
<kw name="Get Regexp Matches" owner="String">
<msg time="2026-10-20T23:21:02.067841" level="INFO">${flows} = ['4', '5', '4']</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-10-20T23:21:02.067494" elapsed="0.000372"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:21:02.068414" level="INFO">${total_flows} = 13</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-10-20T23:21:02.068043" elapsed="0.000396"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<msg time="2026-10-20T23:21:02.068989" level="FAIL">13.0 != 303.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-10-20T23:21:02.068646" elapsed="0.000439">13.0 != 303.0</status>
</kw>
<arg>${mininet_conn_id}</arg>
<arg>${all_flows}</arg>
<doc>Sync with mininet to match exact number of flows</doc>
<status status="FAIL" start="2026-10-20T23:21:01.956937" elapsed="0.112240">13.0 != 303.0</status>
</kw>
<doc>Check Flows after mininet starts.</doc>
<status status="FAIL" start="2026-10-20T23:21:01.955539" elapsed="0.113757">13.0 != 303.0</status>
</test>
<test id="s1-s5-s1-t9" name="Disconnect Mininet" line="77">
<kw name="Disconnect Controller Mininet">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:21:02.070748" level="INFO">${rule} = OUTPUT -p all --source 10.30.170.223 --destination 10.30.170.219 -j DROP</msg>
<var>${rule}</var>
<arg>OUTPUT -p all --source ${ODL_SYSTEM_IP} --destination ${TOOLS_SYSTEM_IP} -j DROP</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:21:02.070408" elapsed="0.000378"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:21:02.071411" level="INFO">${command} = sudo /sbin/iptables -I OUTPUT -p all --source 10.30.170.223 --destination 10.30.170.219 -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-10-20T23:21:02.071022" elapsed="0.000428"/>
</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 or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:02.073380" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:02.073111" elapsed="0.000322"/>
</branch>
<status status="PASS" start="2026-10-20T23:21:02.073091" elapsed="0.000367"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:21:02.073774" level="INFO">index=5
host=10.30.170.219
alias=None
port=22
timeout=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-10-20T23:21:02.073867" level="INFO">${current_ssh_connection} = index=5
host=10.30.170.219
alias=None
port=22
timeout=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-10-20T23:21:02.073654" elapsed="0.000245"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:21:02.074394" level="INFO">Attempting to execute command "sudo /sbin/iptables -I OUTPUT -p all --source 10.30.170.223 --destination 10.30.170.219 -j DROP" on remote system "10.30.170.223" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:21:02.074089" elapsed="0.000349"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:21:02.074944" level="INFO">${conn_id} = 6</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-20T23:21:02.074618" elapsed="0.000350"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-20T23:21:02.075806" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:21:02.075876" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-20T23:21:02.075538" elapsed="0.000360"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:21:02.076050" elapsed="0.000300"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:21:02.077130" level="INFO">Logging into '10.30.170.223:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:21:02.678678" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-194-generic x86_64)

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

 System information as of Tue Oct 20 23:21:02 UTC 2026

  System load:  0.0                Processes:             120
  Usage of /:   14.0% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.170.223
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Tue Oct 20 23:19:25 2026 from 10.30.170.114
[?2004h[jenkins@releng-34016-79-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-10-20T23:21:02.076901" elapsed="0.601874"/>
</kw>
<msg time="2026-10-20T23:21:02.678834" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:21:02.076514" elapsed="0.602376"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-10-20T23:21:02.075164" elapsed="0.603809"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:21:02.679377" level="INFO">Executing command 'sudo /sbin/iptables -I OUTPUT -p all --source 10.30.170.223 --destination 10.30.170.219 -j DROP'.</msg>
<msg time="2026-10-20T23:21:02.702027" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:21:02.702169" level="INFO">${stdout} = </msg>
<msg time="2026-10-20T23:21:02.702223" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:21:02.679193" elapsed="0.023059"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:21:02.702498" elapsed="0.000275"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:21:02.703458" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:21:02.703102" elapsed="0.000467"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:21:02.703828" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:21:02.703667" elapsed="0.000226"/>
</branch>
<status status="PASS" start="2026-10-20T23:21:02.703639" elapsed="0.000283"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-10-20T23:21:02.704107" elapsed="0.000033"/>
</return>
<status status="PASS" start="2026-10-20T23:21:02.703992" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-10-20T23:21:02.703972" elapsed="0.000241"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:21:02.704257" elapsed="0.000018"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-10-20T23:21:02.705984" elapsed="0.000160"/>
</kw>
<msg time="2026-10-20T23:21:02.706198" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:21:02.705262" elapsed="0.001015"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:02.706549" elapsed="0.000028"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:02.706779" 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-10-20T23:21:02.704687" elapsed="0.002197"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-10-20T23:21:02.072670" elapsed="0.634312"/>
</kw>
<msg time="2026-10-20T23:21:02.707048" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:21:02.072116" elapsed="0.634991"/>
</kw>
<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-10-20T23:21:02.071647" elapsed="0.635557"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:21:02.707812" 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 variable.</doc>
<status status="PASS" start="2026-10-20T23:21:02.707433" elapsed="0.000414"/>
</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 or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:02.710461" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:02.710093" elapsed="0.000444"/>
</branch>
<status status="PASS" start="2026-10-20T23:21:02.710068" elapsed="0.000501"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:21:02.711017" level="INFO">index=5
host=10.30.170.219
alias=None
port=22
timeout=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-10-20T23:21:02.711145" level="INFO">${current_ssh_connection} = index=5
host=10.30.170.219
alias=None
port=22
timeout=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-10-20T23:21:02.710874" elapsed="0.000307"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:21:02.711910" level="INFO">Attempting to execute command "sudo /sbin/iptables -L -n" on remote system "10.30.170.223" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:21:02.711481" elapsed="0.000489"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:21:02.712685" 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-10-20T23:21:02.712229" elapsed="0.000491"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-20T23:21:02.714084" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:21:02.714180" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-20T23:21:02.713722" elapsed="0.000488"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:21:02.714437" elapsed="0.000660"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:21:02.716212" level="INFO">Logging into '10.30.170.223:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:21:03.075134" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-194-generic x86_64)

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

 System information as of Tue Oct 20 23:21:02 UTC 2026

  System load:  0.0                Processes:             120
  Usage of /:   14.0% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.170.223
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Tue Oct 20 23:21:02 2026 from 10.30.170.114
[?2004h[jenkins@releng-34016-79-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-10-20T23:21:02.715888" elapsed="0.359365"/>
</kw>
<msg time="2026-10-20T23:21:03.075322" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:21:02.715352" elapsed="0.360024"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-10-20T23:21:02.713199" elapsed="0.362262"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:21:03.075836" level="INFO">Executing command 'sudo /sbin/iptables -L -n'.</msg>
<msg time="2026-10-20T23:21:03.098987" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:21:03.099124" 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-10-20T23:21:03.099180" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:21:03.075668" elapsed="0.023542"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:21:03.099475" elapsed="0.000264"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:21:03.100436" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:21:03.100084" elapsed="0.000405"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:21:03.100716" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:21:03.100581" elapsed="0.000212"/>
</branch>
<status status="PASS" start="2026-10-20T23:21:03.100554" elapsed="0.000269"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-10-20T23:21:03.101005" elapsed="0.000034"/>
</return>
<status status="PASS" start="2026-10-20T23:21:03.100891" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-10-20T23:21:03.100872" elapsed="0.000240"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:21:03.101155" elapsed="0.000018"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-10-20T23:21:03.102864" elapsed="0.000157"/>
</kw>
<msg time="2026-10-20T23:21:03.103074" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:21:03.102142" elapsed="0.001008"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:03.103438" elapsed="0.000030"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:03.103657" elapsed="0.000025"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-10-20T23:21:03.101581" elapsed="0.002192"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-10-20T23:21:02.709490" elapsed="0.394382"/>
</kw>
<msg time="2026-10-20T23:21:03.103946" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:21:02.708739" elapsed="0.395264"/>
</kw>
<msg time="2026-10-20T23:21:03.104138" 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-10-20T23:21:02.708100" elapsed="0.396071"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:21:03.104812" 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         
DROP       all  --  10.30.170.223        10.30.170.219       

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-10-20T23:21:03.104465" elapsed="0.000421"/>
</kw>
<doc>Break and restore controller to mininet connection via iptables.</doc>
<status status="PASS" start="2026-10-20T23:21:02.070055" elapsed="1.034903"/>
</kw>
<doc>Disconnect Mininet.</doc>
<status status="PASS" start="2026-10-20T23:21:02.069613" elapsed="1.035486"/>
</test>
<test id="s1-s5-s1-t10" name="Check No Switches After Disconnect" line="81">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check No Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:21:03.111870" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:21:03.111981" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:21:03.112207" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:21:03.107397" elapsed="0.005721">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:21:03.113699" elapsed="0.000049"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if the `container` contains the `item`.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:03.114418" elapsed="0.000047"/>
</kw>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:21:03.114007" elapsed="0.000531"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:21:03.113883" elapsed="0.000712"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-10-20T23:21:03.106950" elapsed="0.007863">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check No Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:21:04.122437" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:21:04.122558" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:21:04.122777" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:21:04.116952" elapsed="0.006685">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:21:04.124216" elapsed="0.000049"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if the `container` contains the `item`.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:04.124913" elapsed="0.000046"/>
</kw>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:21:04.124516" elapsed="0.000513"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:21:04.124400" elapsed="0.000684"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-10-20T23:21:04.116167" elapsed="0.009104">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check No Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:21:05.132706" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:21:05.132854" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:21:05.133070" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:21:05.127036" elapsed="0.006931">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:21:05.134674" elapsed="0.000051"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if the `container` contains the `item`.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:05.135388" elapsed="0.000048"/>
</kw>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:21:05.134980" elapsed="0.000529"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:21:05.134856" elapsed="0.000708"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-10-20T23:21:05.126169" elapsed="0.009590">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check No Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:21:06.143418" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:21:06.143550" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:21:06.143766" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:21:06.137688" elapsed="0.006995">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:21:06.145352" elapsed="0.000053"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if the `container` contains the `item`.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:06.146048" elapsed="0.000048"/>
</kw>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:21:06.145646" elapsed="0.000522"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:21:06.145520" elapsed="0.000704"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-10-20T23:21:06.136772" elapsed="0.009680">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check No Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:21:07.153561" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:21:07.153684" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:21:07.153917" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:21:07.148200" elapsed="0.006583">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:21:07.155432" elapsed="0.000052"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if the `container` contains the `item`.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:07.156117" elapsed="0.000046"/>
</kw>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:21:07.155715" elapsed="0.000521"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:21:07.155591" elapsed="0.000701"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-10-20T23:21:07.147372" elapsed="0.009149">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check No Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:21:08.164375" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:21:08.164503" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:21:08.164823" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:21:08.158201" elapsed="0.007523">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:21:08.166364" elapsed="0.000052"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if the `container` contains the `item`.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:08.167050" elapsed="0.000048"/>
</kw>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:21:08.166646" elapsed="0.000525"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:21:08.166524" elapsed="0.000702"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-10-20T23:21:08.157398" elapsed="0.010056">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check No Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:21:09.174747" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:21:09.174871" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:21:09.175117" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:21:09.169357" elapsed="0.006677">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:21:09.176660" elapsed="0.000049"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if the `container` contains the `item`.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:09.177380" elapsed="0.000048"/>
</kw>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:21:09.176944" elapsed="0.000557"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:21:09.176819" elapsed="0.000740"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-10-20T23:21:09.168441" elapsed="0.009315">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check No Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:21:10.184930" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:21:10.185078" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:21:10.185293" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:21:10.179606" elapsed="0.006613">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:21:10.186832" elapsed="0.000048"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if the `container` contains the `item`.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:10.187547" elapsed="0.000046"/>
</kw>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:21:10.187139" elapsed="0.000525"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:21:10.187016" elapsed="0.000704"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-10-20T23:21:10.178713" elapsed="0.009201">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check No Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:21:11.195287" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:21:11.195553" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:21:11.195781" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:21:11.189878" elapsed="0.006826">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:21:11.197367" elapsed="0.000052"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if the `container` contains the `item`.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:11.198067" elapsed="0.000048"/>
</kw>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:21:11.197656" elapsed="0.000530"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:21:11.197531" elapsed="0.000714"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-10-20T23:21:11.188952" elapsed="0.009525">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check No Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:21:12.208395" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:21:12.208526" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:21:12.208765" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:21:12.200351" elapsed="0.009346">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:21:12.210343" elapsed="0.000050"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if the `container` contains the `item`.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:12.211011" elapsed="0.000064"/>
</kw>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:21:12.210632" elapsed="0.000515"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:21:12.210506" elapsed="0.000698"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-10-20T23:21:12.199473" elapsed="0.011958">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check No Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:21:13.218926" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:21:13.219049" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:21:13.219295" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:21:13.213342" elapsed="0.006861">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:21:13.220828" elapsed="0.000049"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if the `container` contains the `item`.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:13.221547" elapsed="0.000047"/>
</kw>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:21:13.221133" elapsed="0.000622"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:21:13.220983" elapsed="0.000835"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-10-20T23:21:13.212441" elapsed="0.009580">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check No Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:21:14.229268" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:21:14.229432" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:21:14.229652" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:21:14.223882" elapsed="0.006683">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:21:14.231190" elapsed="0.000049"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if the `container` contains the `item`.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:14.231893" elapsed="0.000047"/>
</kw>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:21:14.231508" elapsed="0.000503"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:21:14.231381" elapsed="0.000687"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-10-20T23:21:14.222981" elapsed="0.009307">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check No Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:21:15.239270" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:21:15.239434" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:21:15.239655" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:21:15.234042" elapsed="0.006515">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:21:15.241164" elapsed="0.000050"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if the `container` contains the `item`.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:15.241892" elapsed="0.000046"/>
</kw>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:21:15.241495" elapsed="0.000514"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:21:15.241352" elapsed="0.000714"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-10-20T23:21:15.233194" elapsed="0.009083">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check No Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:21:16.250269" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:21:16.250430" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:21:16.250747" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:21:16.244241" elapsed="0.007998">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:21:16.252872" elapsed="0.000051"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if the `container` contains the `item`.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:16.253594" elapsed="0.000047"/>
</kw>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:21:16.253156" elapsed="0.000558"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:21:16.253031" elapsed="0.000738"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-10-20T23:21:16.243299" elapsed="0.010668">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check No Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:21:17.261338" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:21:17.261472" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:21:17.261690" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:21:17.255871" elapsed="0.006734">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:21:17.263192" elapsed="0.000076"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if the `container` contains the `item`.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:17.263917" elapsed="0.000050"/>
</kw>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:21:17.263534" elapsed="0.000512"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:21:17.263409" elapsed="0.000693"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-10-20T23:21:17.254970" elapsed="0.009391">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check No Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:21:18.271667" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:21:18.271796" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:21:18.272026" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:21:18.266208" elapsed="0.006753">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:21:18.273617" elapsed="0.000050"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if the `container` contains the `item`.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:18.274304" elapsed="0.000078"/>
</kw>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:21:18.273908" elapsed="0.000545"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:21:18.273781" elapsed="0.000729"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-10-20T23:21:18.265375" elapsed="0.009335">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check No Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:21:19.282037" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:21:19.282256" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:21:19.282535" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:21:19.276601" elapsed="0.006841">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:21:19.284060" elapsed="0.000048"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if the `container` contains the `item`.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:19.284780" elapsed="0.000046"/>
</kw>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:21:19.284397" elapsed="0.000503"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:21:19.284214" elapsed="0.000743"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-10-20T23:21:19.275640" elapsed="0.009513">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check No Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:21:20.292675" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:21:20.292798" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:21:20.293013" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:21:20.287047" elapsed="0.007478">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:21:20.295125" elapsed="0.000049"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if the `container` contains the `item`.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:20.295841" elapsed="0.000046"/>
</kw>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:21:20.295452" elapsed="0.000507"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:21:20.295282" elapsed="0.000733"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-10-20T23:21:20.286123" elapsed="0.010090">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check No Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:21:21.304254" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:21:21.304451" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:21:21.304678" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:21:21.298209" elapsed="0.007382">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:21:21.306187" elapsed="0.000051"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if the `container` contains the `item`.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:21.306917" elapsed="0.000046"/>
</kw>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:21:21.306530" elapsed="0.000602"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:21:21.306400" elapsed="0.000796"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-10-20T23:21:21.297256" elapsed="0.010189">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check No Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:21:22.314780" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:21:22.314906" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:21:22.315124" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:21:22.309297" elapsed="0.006740">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:21:22.316684" elapsed="0.000051"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if the `container` contains the `item`.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:22.317408" elapsed="0.000050"/>
</kw>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:21:22.316969" elapsed="0.000563"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:21:22.316844" elapsed="0.000746"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-10-20T23:21:22.308468" elapsed="0.009322">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check No Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:21:23.325146" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:21:23.325270" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:21:23.325552" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:21:23.319618" elapsed="0.006841">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:21:23.327107" elapsed="0.000054"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if the `container` contains the `item`.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:23.327865" elapsed="0.000047"/>
</kw>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:21:23.327478" elapsed="0.000506"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:21:23.327283" elapsed="0.000758"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-10-20T23:21:23.318743" elapsed="0.009498">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check No Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:21:24.335758" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:21:24.335904" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:21:24.336229" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:21:24.330140" elapsed="0.007718">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:21:24.338551" elapsed="0.000054"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if the `container` contains the `item`.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:24.339219" elapsed="0.000048"/>
</kw>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:21:24.338839" elapsed="0.000529"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:21:24.338715" elapsed="0.000729"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-10-20T23:21:24.329224" elapsed="0.010426">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check No Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:21:25.347024" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:21:25.347145" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:21:25.347395" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:21:25.341508" elapsed="0.006759">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:21:25.348935" elapsed="0.000051"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if the `container` contains the `item`.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:25.349639" elapsed="0.000047"/>
</kw>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:21:25.349214" elapsed="0.000543"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:21:25.349091" elapsed="0.000723"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-10-20T23:21:25.340620" elapsed="0.009386">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check No Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:21:26.357452" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:21:26.357611" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:21:26.357831" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:21:26.351864" elapsed="0.006899">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:21:26.359386" elapsed="0.000051"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if the `container` contains the `item`.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:26.360072" elapsed="0.000047"/>
</kw>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:21:26.359689" elapsed="0.000502"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:21:26.359563" elapsed="0.000685"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-10-20T23:21:26.351003" elapsed="0.009474">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check No Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:21:27.367944" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:21:27.368171" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:21:27.368430" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:21:27.362386" elapsed="0.006959">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:21:27.369998" elapsed="0.000050"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if the `container` contains the `item`.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:27.370722" elapsed="0.000047"/>
</kw>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:21:27.370280" elapsed="0.000562"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:21:27.370154" elapsed="0.000746"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-10-20T23:21:27.361494" elapsed="0.009606">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check No Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:21:28.378989" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:21:28.379115" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:21:28.379426" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:21:28.373149" elapsed="0.007868">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:21:28.381672" elapsed="0.000052"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if the `container` contains the `item`.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:28.382371" elapsed="0.000049"/>
</kw>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:21:28.381959" elapsed="0.000533"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:21:28.381830" elapsed="0.000748"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-10-20T23:21:28.372164" elapsed="0.010645">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check No Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:21:29.390377" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:21:29.390504" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:21:29.390750" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:21:29.384777" elapsed="0.006897">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:21:29.392275" elapsed="0.000082"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if the `container` contains the `item`.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:29.393002" elapsed="0.000047"/>
</kw>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:21:29.392617" elapsed="0.000604"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:21:29.392466" elapsed="0.000819"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-10-20T23:21:29.383866" elapsed="0.009657">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check No Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:21:30.398497" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:21:30.398561" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:21:30.398700" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:21:30.394924" elapsed="0.004232">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:21:30.399495" elapsed="0.000024"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if the `container` contains the `item`.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:30.399835" elapsed="0.000022"/>
</kw>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:21:30.399652" elapsed="0.000238"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:21:30.399572" elapsed="0.000344"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-10-20T23:21:30.394234" elapsed="0.005779">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check No Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:21:31.407693" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:21:31.407821" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:21:31.408040" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:21:31.401873" elapsed="0.007089">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:21:31.409621" elapsed="0.000070"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if the `container` contains the `item`.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:31.410334" elapsed="0.000049"/>
</kw>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:21:31.409926" elapsed="0.000530"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:21:31.409800" elapsed="0.000714"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-10-20T23:21:31.400980" elapsed="0.009757">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check No Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:21:32.419203" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:21:32.419357" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:21:32.419715" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:21:32.412757" elapsed="0.007951">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:21:32.421300" elapsed="0.000080"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if the `container` contains the `item`.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:32.422010" elapsed="0.000047"/>
</kw>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:21:32.421610" elapsed="0.000520"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:21:32.421486" elapsed="0.000703"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-10-20T23:21:32.411776" elapsed="0.010643">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check No Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:21:33.429919" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:21:33.430044" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:21:33.430258" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:21:33.424241" elapsed="0.006934">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:21:33.431830" elapsed="0.000051"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if the `container` contains the `item`.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:33.432523" elapsed="0.000048"/>
</kw>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:21:33.432111" elapsed="0.000534"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:21:33.431987" elapsed="0.000715"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-10-20T23:21:33.423383" elapsed="0.009539">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<msg time="2026-10-20T23:21:33.433105" level="FAIL">Keyword 'FlowLib.Check No Switches In Topology' failed after retrying for 30 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</msg>
<arg>30s</arg>
<arg>1s</arg>
<arg>FlowLib.Check No Switches In Topology</arg>
<arg>${SWITCHES}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-10-20T23:21:03.106169" elapsed="30.327130">Keyword 'FlowLib.Check No Switches In Topology' failed after retrying for 30 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<doc>Check no switches in topology.</doc>
<status status="FAIL" start="2026-10-20T23:21:03.105459" elapsed="30.328183">Keyword 'FlowLib.Check No Switches In Topology' failed after retrying for 30 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</test>
<test id="s1-s5-s1-t11" name="Reconnect Mininet" line="85">
<kw name="Disconnect Controller Mininet">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:21:33.437216" level="INFO">${rule} = OUTPUT -p all --source 10.30.170.223 --destination 10.30.170.219 -j DROP</msg>
<var>${rule}</var>
<arg>OUTPUT -p all --source ${ODL_SYSTEM_IP} --destination ${TOOLS_SYSTEM_IP} -j DROP</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:21:33.436110" elapsed="0.001168"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:21:33.438897" level="INFO">${command} = sudo /sbin/iptables -D OUTPUT -p all --source 10.30.170.223 --destination 10.30.170.219 -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-10-20T23:21:33.437936" elapsed="0.001021"/>
</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 or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:33.443428" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:33.442824" elapsed="0.000724"/>
</branch>
<status status="PASS" start="2026-10-20T23:21:33.442775" elapsed="0.000826"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:21:33.444348" level="INFO">index=5
host=10.30.170.219
alias=None
port=22
timeout=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-10-20T23:21:33.444557" level="INFO">${current_ssh_connection} = index=5
host=10.30.170.219
alias=None
port=22
timeout=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-10-20T23:21:33.444067" elapsed="0.000630"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:21:33.445881" level="INFO">Attempting to execute command "sudo /sbin/iptables -D OUTPUT -p all --source 10.30.170.223 --destination 10.30.170.219 -j DROP" on remote system "10.30.170.223" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:21:33.445156" elapsed="0.000825"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:21:33.447130" level="INFO">${conn_id} = 8</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-20T23:21:33.446416" elapsed="0.000768"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-20T23:21:33.449107" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:21:33.449261" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-20T23:21:33.448514" 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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:21:33.449683" elapsed="0.001263"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:21:33.452894" level="INFO">Logging into '10.30.170.223:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:21:33.817438" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-194-generic x86_64)

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

 System information as of Tue Oct 20 23:21:02 UTC 2026

  System load:  0.0                Processes:             120
  Usage of /:   14.0% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.170.223
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Tue Oct 20 23:21:02 2026 from 10.30.170.114
[?2004h[jenkins@releng-34016-79-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-10-20T23:21:33.452278" elapsed="0.365308"/>
</kw>
<msg time="2026-10-20T23:21:33.817667" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:21:33.451385" elapsed="0.366388"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-10-20T23:21:33.447653" elapsed="0.370237"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:21:33.818435" level="INFO">Executing command 'sudo /sbin/iptables -D OUTPUT -p all --source 10.30.170.223 --destination 10.30.170.219 -j DROP'.</msg>
<msg time="2026-10-20T23:21:33.851158" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:21:33.851360" level="INFO">${stdout} = </msg>
<msg time="2026-10-20T23:21:33.851421" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:21:33.818189" elapsed="0.033262"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:21:33.851897" elapsed="0.000483"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:21:33.853579" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:21:33.852968" elapsed="0.000700"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:21:33.854099" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:21:33.853855" elapsed="0.000349"/>
</branch>
<status status="PASS" start="2026-10-20T23:21:33.853805" 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-10-20T23:21:33.854580" elapsed="0.000056"/>
</return>
<status status="PASS" start="2026-10-20T23:21:33.854395" elapsed="0.000309"/>
</branch>
<status status="PASS" start="2026-10-20T23:21:33.854361" elapsed="0.000416"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:21:33.854850" elapsed="0.000029"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-10-20T23:21:33.857767" elapsed="0.000278"/>
</kw>
<msg time="2026-10-20T23:21:33.858138" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:21:33.856499" elapsed="0.001770"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:33.858760" elapsed="0.000068"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:33.859225" 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-10-20T23:21:33.855543" elapsed="0.003947"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-10-20T23:21:33.441693" elapsed="0.417978"/>
</kw>
<msg time="2026-10-20T23:21:33.859904" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:21:33.440475" elapsed="0.419531"/>
</kw>
<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-10-20T23:21:33.439418" elapsed="0.420759"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:21:33.861188" 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 variable.</doc>
<status status="PASS" start="2026-10-20T23:21:33.860559" elapsed="0.000687"/>
</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 or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:33.865649" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:33.865043" elapsed="0.000750"/>
</branch>
<status status="PASS" start="2026-10-20T23:21:33.865003" elapsed="0.000842"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:21:33.866552" level="INFO">index=5
host=10.30.170.219
alias=None
port=22
timeout=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-10-20T23:21:33.866773" level="INFO">${current_ssh_connection} = index=5
host=10.30.170.219
alias=None
port=22
timeout=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-10-20T23:21:33.866287" elapsed="0.000543"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:21:33.867943" level="INFO">Attempting to execute command "sudo /sbin/iptables -L -n" on remote system "10.30.170.223" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:21:33.867249" elapsed="0.000789"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:21:33.869348" level="INFO">${conn_id} = 9</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-20T23:21:33.868462" elapsed="0.000922"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-20T23:21:33.870691" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:21:33.870803" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-20T23:21:33.870325" 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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:21:33.871045" elapsed="0.000417"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:21:33.872561" level="INFO">Logging into '10.30.170.223:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:21:34.238522" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-194-generic x86_64)

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

 System information as of Tue Oct 20 23:21:02 UTC 2026

  System load:  0.0                Processes:             120
  Usage of /:   14.0% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.170.223
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Tue Oct 20 23:21:33 2026 from 10.30.170.114
[?2004h[jenkins@releng-34016-79-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-10-20T23:21:33.872217" elapsed="0.366489"/>
</kw>
<msg time="2026-10-20T23:21:34.238822" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:21:33.871693" elapsed="0.367229"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-10-20T23:21:33.869694" elapsed="0.369370"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:21:34.239724" level="INFO">Executing command 'sudo /sbin/iptables -L -n'.</msg>
<msg time="2026-10-20T23:21:34.262846" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:21:34.262996" 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-10-20T23:21:34.263054" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:21:34.239453" elapsed="0.023630"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:21:34.263333" elapsed="0.000299"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:21:34.264414" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:21:34.264014" elapsed="0.000458"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:21:34.264839" elapsed="0.000025"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:21:34.264614" elapsed="0.000296"/>
</branch>
<status status="PASS" start="2026-10-20T23:21:34.264574" elapsed="0.000368"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-10-20T23:21:34.265208" elapsed="0.000036"/>
</return>
<status status="PASS" start="2026-10-20T23:21:34.265085" elapsed="0.000204"/>
</branch>
<status status="PASS" start="2026-10-20T23:21:34.265062" elapsed="0.000283"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:21:34.265396" 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-10-20T23:21:34.267240" elapsed="0.000204"/>
</kw>
<msg time="2026-10-20T23:21:34.267504" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:21:34.266476" elapsed="0.001111"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:34.267863" elapsed="0.000031"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:34.268090" 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-10-20T23:21:34.265854" elapsed="0.002346"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-10-20T23:21:33.864060" elapsed="0.404264"/>
</kw>
<msg time="2026-10-20T23:21:34.268406" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:21:33.862858" elapsed="0.405612"/>
</kw>
<msg time="2026-10-20T23:21:34.268627" 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-10-20T23:21:33.861706" elapsed="0.406963"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:21:34.269340" 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-10-20T23:21:34.268976" elapsed="0.000449"/>
</kw>
<arg>restore</arg>
<doc>Break and restore controller to mininet connection via iptables.</doc>
<status status="PASS" start="2026-10-20T23:21:33.435295" elapsed="0.834206"/>
</kw>
<doc>Connect Mininet.</doc>
<status status="PASS" start="2026-10-20T23:21:33.434303" elapsed="0.835344"/>
</test>
<test id="s1-s5-s1-t12" name="Check Linear Topology After Mininet Reconnects" line="89">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:21:34.276921" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:21:34.276994" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:21:34.277127" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:21:34.272380" elapsed="0.005331">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:21:34.278084" elapsed="0.000031"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:34.278730" elapsed="0.000059"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:34.279118" elapsed="0.000031"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:34.279437" elapsed="0.000029"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:34.279728" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:34.280098" elapsed="0.000033"/>
</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-10-20T23:21:34.280474" elapsed="0.000030"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:34.280871" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:34.280598" elapsed="0.000348"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:34.280573" elapsed="0.000405"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:34.281342" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:34.281049" elapsed="0.000368"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:34.281029" elapsed="0.000423"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:34.281795" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:34.281525" elapsed="0.000345"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:34.281504" elapsed="0.000397"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:21:34.278473" elapsed="0.003460"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:21:34.278184" elapsed="0.003785"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:21:34.271650" elapsed="0.010449">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:21:35.290178" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:21:35.290389" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:21:35.290701" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:21:35.284206" elapsed="0.007675">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:21:35.292533" elapsed="0.000052"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:35.293509" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:35.293987" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:35.294627" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:35.295101" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:35.295582" elapsed="0.000043"/>
</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-10-20T23:21:35.296074" elapsed="0.000055"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:35.296937" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:35.296344" elapsed="0.000723"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:35.296252" elapsed="0.000869"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:35.297660" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:35.297233" elapsed="0.000662"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:35.297200" elapsed="0.000749"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:35.298485" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:35.298059" elapsed="0.000541"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:35.298027" elapsed="0.000622"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:21:35.293090" elapsed="0.005607"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:21:35.292694" elapsed="0.006059"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:21:35.283350" elapsed="0.015699">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:21:36.307115" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:21:36.307245" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:21:36.307516" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:21:36.301349" elapsed="0.007634">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:21:36.309650" elapsed="0.000056"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:36.310728" elapsed="0.000057"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:36.311245" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:36.311729" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:36.312197" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:36.312669" elapsed="0.000042"/>
</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-10-20T23:21:36.313172" elapsed="0.000044"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:36.313792" elapsed="0.000072"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:36.313392" elapsed="0.000544"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:36.313350" elapsed="0.000641"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:36.314536" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:36.314104" elapsed="0.000545"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:36.314071" elapsed="0.000629"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:36.315227" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:36.314832" elapsed="0.000533"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:36.314779" elapsed="0.000637"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:21:36.310227" elapsed="0.005238"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:21:36.309843" elapsed="0.005674"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:21:36.300365" elapsed="0.015352">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:21:37.323622" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:21:37.323748" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:21:37.324078" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:21:37.317954" elapsed="0.007031">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:21:37.325619" elapsed="0.000051"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:37.326616" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:37.327101" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:37.327600" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:37.328068" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:37.328565" elapsed="0.000043"/>
</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-10-20T23:21:37.329046" elapsed="0.000043"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:37.329665" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:37.329235" elapsed="0.000541"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:37.329195" elapsed="0.000634"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:37.330383" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:37.329964" elapsed="0.000532"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:37.329932" elapsed="0.000615"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:37.331066" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:37.330655" elapsed="0.000523"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:37.330623" elapsed="0.000604"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:21:37.326173" elapsed="0.005102"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:21:37.325775" elapsed="0.005580"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:21:37.317084" elapsed="0.014472">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:21:38.340566" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:21:38.340732" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:21:38.341096" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:21:38.334186" elapsed="0.008175">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:21:38.343348" elapsed="0.000069"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:38.344620" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:38.345127" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:38.345611" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:38.346208" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:38.346703" elapsed="0.000044"/>
</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-10-20T23:21:38.347305" elapsed="0.000078"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:38.348403" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:38.347943" elapsed="0.000582"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:38.347498" elapsed="0.001085"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:38.349183" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:38.348708" elapsed="0.000630"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:38.348669" elapsed="0.000727"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:38.349948" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:38.349518" elapsed="0.000553"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:38.349481" elapsed="0.000642"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:21:38.344085" elapsed="0.006092"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:21:38.343560" elapsed="0.006674"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:21:38.333155" elapsed="0.017313">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:21:39.358574" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:21:39.358697" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:21:39.358938" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:21:39.352632" elapsed="0.007221">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:21:39.360507" elapsed="0.000050"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:39.361478" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:39.361960" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:39.362435" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:39.362878" elapsed="0.000064"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:39.363370" elapsed="0.000043"/>
</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-10-20T23:21:39.363825" elapsed="0.000042"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:39.364476" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:39.364034" elapsed="0.000557"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:39.363992" elapsed="0.000661"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:39.365175" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:39.364764" elapsed="0.000525"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:39.364732" elapsed="0.000635"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:39.365864" elapsed="0.000061"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:39.365477" elapsed="0.000519"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:39.365446" elapsed="0.000600"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:21:39.361062" elapsed="0.005031"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:21:39.360661" elapsed="0.005484"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:21:39.351728" elapsed="0.014641">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:21:40.374621" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:21:40.374748" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:21:40.374995" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:21:40.368633" elapsed="0.007274">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:21:40.376630" elapsed="0.000051"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:40.377634" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:40.378105" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:40.378590" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:40.379053" elapsed="0.000041"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:40.379515" elapsed="0.000042"/>
</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-10-20T23:21:40.379987" elapsed="0.000042"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:40.380614" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:40.380177" elapsed="0.000547"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:40.380136" elapsed="0.000642"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:40.381333" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:40.380888" elapsed="0.000568"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:40.380856" elapsed="0.000648"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:40.382020" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:40.381610" elapsed="0.000522"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:40.381579" elapsed="0.000600"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:21:40.377206" elapsed="0.005020"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:21:40.376795" elapsed="0.005483"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:21:40.367745" elapsed="0.014762">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:21:41.391066" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:21:41.391193" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:21:41.391473" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:21:41.385176" elapsed="0.007224">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:21:41.393105" elapsed="0.000051"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:41.394073" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:41.394557" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:41.395028" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:41.395497" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:41.395940" elapsed="0.000061"/>
</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-10-20T23:21:41.396447" elapsed="0.000043"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:41.397056" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:41.396637" elapsed="0.000531"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:41.396597" elapsed="0.000626"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:41.397753" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:41.397362" elapsed="0.000501"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:41.397302" elapsed="0.000609"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:41.398450" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:41.398038" elapsed="0.000524"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:41.398006" elapsed="0.000604"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:21:41.393666" elapsed="0.004991"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:21:41.393262" elapsed="0.005448"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:21:41.383819" elapsed="0.015089">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:21:42.407193" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:21:42.407354" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:21:42.407579" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:21:42.401088" elapsed="0.007422">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:21:42.409142" elapsed="0.000052"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:42.410132" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:42.410618" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:42.411076" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:42.411543" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:42.411983" elapsed="0.000072"/>
</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-10-20T23:21:42.412502" elapsed="0.000044"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:42.413103" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:42.412689" elapsed="0.000647"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:42.412649" elapsed="0.000748"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:42.413899" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:42.413510" elapsed="0.000526"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:42.413477" elapsed="0.000611"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:42.414615" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:42.414197" elapsed="0.000530"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:42.414165" elapsed="0.000611"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:21:42.409716" elapsed="0.005108"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:21:42.409301" elapsed="0.005577"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:21:42.400232" elapsed="0.014926">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:21:43.423208" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:21:43.423369" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:21:43.423593" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:21:43.417291" elapsed="0.007230">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:21:43.425150" elapsed="0.000050"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:43.429210" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:43.429706" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:43.430173" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:43.430646" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:43.431108" elapsed="0.000044"/>
</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-10-20T23:21:43.431604" elapsed="0.000043"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:43.432207" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:43.431791" elapsed="0.000558"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:43.431752" elapsed="0.000659"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:43.432911" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:43.432523" elapsed="0.000498"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:43.432490" elapsed="0.000598"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:43.433667" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:43.433196" elapsed="0.000598"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:43.433164" elapsed="0.000679"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:21:43.428779" elapsed="0.005111"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:21:43.425334" elapsed="0.008608"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:21:43.416443" elapsed="0.017717">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:21:44.441851" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:21:44.442105" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:21:44.442355" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:21:44.436281" elapsed="0.006964">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:21:44.443861" elapsed="0.000048"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:44.444827" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:44.445293" elapsed="0.000074"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:44.445766" elapsed="0.000041"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:44.446221" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:44.446684" elapsed="0.000041"/>
</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-10-20T23:21:44.447153" elapsed="0.000041"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:44.447791" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:44.447372" elapsed="0.000529"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:44.447302" elapsed="0.000655"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:44.448505" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:44.448088" elapsed="0.000531"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:44.448035" elapsed="0.000633"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:44.449183" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:44.448777" elapsed="0.000517"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:44.448745" elapsed="0.000627"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:21:44.444445" elapsed="0.004976"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:21:44.444015" elapsed="0.005459"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:21:44.435430" elapsed="0.014243">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:21:45.460623" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:21:45.460748" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:21:45.460963" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:21:45.451818" elapsed="0.010117">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:21:45.462599" elapsed="0.000050"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:45.463599" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:45.464054" elapsed="0.000062"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:45.464654" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:45.465135" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:45.465653" elapsed="0.000045"/>
</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-10-20T23:21:45.466135" elapsed="0.000043"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:45.466758" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:45.466352" elapsed="0.000518"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:45.466285" elapsed="0.000638"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:45.467477" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:45.467033" elapsed="0.000559"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:45.467001" elapsed="0.000639"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:45.468158" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:45.467748" elapsed="0.000522"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:45.467716" elapsed="0.000631"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:21:45.463155" elapsed="0.005244"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:21:45.462755" elapsed="0.005698"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:21:45.450926" elapsed="0.017728">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:21:46.477082" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:21:46.477232" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:21:46.477508" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:21:46.471303" elapsed="0.007147">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:21:46.479039" elapsed="0.000048"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:46.480019" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:46.480546" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:46.480992" elapsed="0.000040"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:46.481475" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:46.481912" elapsed="0.000040"/>
</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-10-20T23:21:46.482408" elapsed="0.000043"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:46.482991" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:46.482597" elapsed="0.000504"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:46.482557" elapsed="0.000622"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:46.483718" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:46.483295" elapsed="0.000534"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:46.483261" elapsed="0.000709"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:46.484531" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:46.484089" elapsed="0.000556"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:46.484056" elapsed="0.000639"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:21:46.479635" elapsed="0.005109"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:21:46.479218" elapsed="0.005579"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:21:46.469898" elapsed="0.015096">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:21:47.492994" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:21:47.493120" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:21:47.493403" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:21:47.487088" elapsed="0.007204">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:21:47.494917" elapsed="0.000049"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:47.495884" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:47.496388" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:47.496833" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:47.497294" elapsed="0.000069"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:47.497760" elapsed="0.000042"/>
</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-10-20T23:21:47.498230" elapsed="0.000043"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:47.498844" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:47.498448" elapsed="0.000503"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:47.498407" elapsed="0.000598"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:47.499553" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:47.499115" elapsed="0.000548"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:47.499083" elapsed="0.000628"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:47.500225" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:47.499818" elapsed="0.000544"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:47.499787" elapsed="0.000625"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:21:47.495496" elapsed="0.004963"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:21:47.495069" elapsed="0.005442"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:21:47.486247" elapsed="0.014460">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:21:48.508567" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:21:48.508691" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:21:48.509023" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:21:48.502934" elapsed="0.007005">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:21:48.510596" elapsed="0.000050"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:48.512032" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:48.512553" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:48.513001" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:48.513494" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:48.513939" elapsed="0.000041"/>
</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-10-20T23:21:48.514442" elapsed="0.000060"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:48.515052" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:48.514651" elapsed="0.000513"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:48.514610" elapsed="0.000630"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:48.515850" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:48.515438" elapsed="0.000528"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:48.515397" elapsed="0.000619"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:48.516563" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:48.516125" elapsed="0.000551"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:48.516092" elapsed="0.000633"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:21:48.511635" elapsed="0.005138"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:21:48.510754" elapsed="0.006072"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:21:48.502011" elapsed="0.015015">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:21:49.525015" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:21:49.525140" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:21:49.525422" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:21:49.519150" elapsed="0.007185">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:21:49.526938" elapsed="0.000051"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:49.527906" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:49.528420" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:49.528867" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:49.529363" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:49.529811" elapsed="0.000041"/>
</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-10-20T23:21:49.530404" elapsed="0.000046"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:49.530998" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:49.530599" elapsed="0.000511"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:49.530559" elapsed="0.000605"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:49.531722" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:49.531296" elapsed="0.000540"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:49.531262" elapsed="0.000625"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:49.532446" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:49.531996" elapsed="0.000564"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:49.531964" elapsed="0.000645"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:21:49.527518" elapsed="0.005140"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:21:49.527094" elapsed="0.005626"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:21:49.518335" elapsed="0.014612">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:21:50.540940" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:21:50.541063" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:21:50.541297" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:21:50.535227" elapsed="0.006943">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:21:50.542820" elapsed="0.000049"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:50.543782" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:50.544237" elapsed="0.000102"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:50.544746" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:50.545185" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:50.545674" elapsed="0.000043"/>
</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-10-20T23:21:50.546128" elapsed="0.000041"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:50.546757" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:50.546362" elapsed="0.000506"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:50.546297" elapsed="0.000626"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:50.547461" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:50.547032" elapsed="0.000543"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:50.546999" elapsed="0.000626"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:50.548123" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:50.547732" elapsed="0.000501"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:50.547700" elapsed="0.000631"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:21:50.543397" elapsed="0.004986"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:21:50.542974" elapsed="0.005462"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:21:50.534297" elapsed="0.014337">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:21:51.556748" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:21:51.556868" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:21:51.557091" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:21:51.551089" elapsed="0.006881">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:21:51.558588" elapsed="0.000051"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:51.559540" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:51.560000" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:51.560490" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:51.560934" elapsed="0.000041"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:51.561436" elapsed="0.000044"/>
</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-10-20T23:21:51.561892" elapsed="0.000042"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:51.562547" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:51.562075" elapsed="0.000587"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:51.562037" elapsed="0.000678"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:51.563223" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:51.562829" elapsed="0.000550"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:51.562796" elapsed="0.000634"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:51.563936" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:51.563541" elapsed="0.000506"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:51.563508" elapsed="0.000588"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:21:51.559110" elapsed="0.005034"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:21:51.558742" elapsed="0.005455"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:21:51.550276" elapsed="0.014159">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:21:52.571874" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:21:52.571993" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:21:52.572195" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:21:52.566227" elapsed="0.006822">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:21:52.573747" elapsed="0.000053"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:52.574689" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:52.575144" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:52.575633" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:52.576076" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:52.576559" elapsed="0.000043"/>
</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-10-20T23:21:52.577036" elapsed="0.000043"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:52.577678" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:52.577219" elapsed="0.000573"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:52.577181" elapsed="0.000664"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:52.578391" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:52.577955" elapsed="0.000553"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:52.577923" elapsed="0.000635"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:52.579065" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:52.578665" elapsed="0.000509"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:52.578633" elapsed="0.000591"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:21:52.574259" elapsed="0.005013"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:21:52.573901" elapsed="0.005479"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:21:52.565506" elapsed="0.014071">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:21:53.587765" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:21:53.587887" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:21:53.588099" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:21:53.581639" elapsed="0.007343">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:21:53.589639" elapsed="0.000051"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:53.591075" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:53.591585" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:53.592023" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:53.592508" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:53.592950" elapsed="0.000041"/>
</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-10-20T23:21:53.593443" elapsed="0.000044"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:53.594026" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:53.593629" elapsed="0.000618"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:53.593590" elapsed="0.000712"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:53.594859" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:53.594464" elapsed="0.000506"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:53.594430" elapsed="0.000591"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:53.595570" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:53.595129" elapsed="0.000555"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:53.595097" elapsed="0.000637"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:21:53.590683" elapsed="0.005100"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:21:53.589794" elapsed="0.006043"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:21:53.580777" elapsed="0.015257">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:21:54.603423" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:21:54.603540" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:21:54.603744" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:21:54.597866" elapsed="0.006749">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:21:54.605178" elapsed="0.000049"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:54.606125" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:54.606622" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:54.607061" elapsed="0.000041"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:54.607541" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:54.607984" elapsed="0.000041"/>
</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-10-20T23:21:54.608481" elapsed="0.000045"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:54.609062" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:54.608666" elapsed="0.000507"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:54.608628" elapsed="0.000598"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:54.609789" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:54.609367" elapsed="0.000536"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:54.609304" elapsed="0.000648"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:54.610494" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:54.610061" elapsed="0.000544"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:54.610029" elapsed="0.000625"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:21:54.605745" elapsed="0.004956"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:21:54.605357" elapsed="0.005396"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:21:54.597077" elapsed="0.013865">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:21:55.618904" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:21:55.619103" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:21:55.619340" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:21:55.612761" elapsed="0.007402">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:21:55.620792" elapsed="0.000051"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:55.621753" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:55.622205" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:55.622695" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:55.623131" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:55.623626" elapsed="0.000043"/>
</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-10-20T23:21:55.624077" elapsed="0.000041"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:55.624718" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:55.624259" elapsed="0.000574"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:55.624222" elapsed="0.000663"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:55.625446" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:55.624995" elapsed="0.000565"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:55.624963" elapsed="0.000647"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:55.626106" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:55.625718" elapsed="0.000496"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:55.625686" elapsed="0.000578"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:21:55.621347" elapsed="0.004993"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:21:55.620943" elapsed="0.005452"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:21:55.611998" elapsed="0.014610">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:21:56.634191" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:21:56.634342" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:21:56.634588" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:21:56.628836" elapsed="0.006576">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:21:56.635977" elapsed="0.000048"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:56.636927" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:56.637414" elapsed="0.000062"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:56.637957" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:56.638432" elapsed="0.000060"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:56.638893" elapsed="0.000042"/>
</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-10-20T23:21:56.639371" elapsed="0.000044"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:56.639973" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:56.639577" elapsed="0.000507"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:56.639538" elapsed="0.000599"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:56.640684" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:56.640249" elapsed="0.000550"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:56.640217" elapsed="0.000632"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:56.641377" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:56.640959" elapsed="0.000554"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:56.640926" elapsed="0.000637"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:21:56.636539" elapsed="0.005074"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:21:56.636122" elapsed="0.005543"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:21:56.628069" elapsed="0.013788">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:21:57.649342" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:21:57.649463" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:21:57.649689" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:21:57.643682" elapsed="0.006869">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:21:57.651126" elapsed="0.000051"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:57.652086" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:57.652592" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:57.653048" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:57.653544" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:57.653989" elapsed="0.000041"/>
</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-10-20T23:21:57.654471" elapsed="0.000065"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:57.655071" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:57.654680" elapsed="0.000501"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:57.654641" elapsed="0.000592"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:57.655788" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:57.655374" elapsed="0.000527"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:57.655339" elapsed="0.000681"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:57.656586" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:57.656139" elapsed="0.000563"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:57.656105" elapsed="0.000647"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:21:57.651703" elapsed="0.005097"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:21:57.651276" elapsed="0.005576"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:21:57.642915" elapsed="0.014129">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:21:58.664487" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:21:58.664629" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:21:58.664829" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:21:58.658892" elapsed="0.007207">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:21:58.666719" elapsed="0.000053"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:58.667674" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:58.668136" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:58.668625" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:58.669071" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:58.669572" elapsed="0.000043"/>
</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-10-20T23:21:58.670030" elapsed="0.000043"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:58.670662" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:58.670214" elapsed="0.000562"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:58.670176" elapsed="0.000653"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:58.671359" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:58.670942" elapsed="0.000531"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:58.670910" elapsed="0.000632"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:58.672042" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:58.671655" elapsed="0.000497"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:58.671622" elapsed="0.000579"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:21:58.667241" elapsed="0.005008"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:21:58.666872" elapsed="0.005429"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:21:58.658111" elapsed="0.014433">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:21:59.680289" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:21:59.680446" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:21:59.680767" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:21:59.674407" elapsed="0.007228">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:21:59.682207" elapsed="0.000049"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:59.683165" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:59.683662" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:59.684106" elapsed="0.000041"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:59.684593" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:59.685036" elapsed="0.000040"/>
</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-10-20T23:21:59.685525" elapsed="0.000059"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:59.686117" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:59.685726" elapsed="0.000499"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:59.685688" elapsed="0.000590"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:59.686826" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:59.686416" elapsed="0.000520"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:59.686383" elapsed="0.000602"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:21:59.687503" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:21:59.687092" elapsed="0.000558"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:21:59.687060" elapsed="0.000646"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:21:59.682783" elapsed="0.004971"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:21:59.682390" elapsed="0.005415"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:21:59.673645" elapsed="0.014353">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:22:00.696748" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:22:00.696885" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:22:00.697136" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:22:00.690716" elapsed="0.007471">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:22:00.698940" elapsed="0.000051"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:00.699934" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:00.700438" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:00.700904" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:00.701373" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:00.701847" elapsed="0.000043"/>
</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-10-20T23:22:00.702483" elapsed="0.000045"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:00.703633" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:22:00.703163" elapsed="0.000592"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:22:00.702662" elapsed="0.001150"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:00.704374" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:22:00.703931" elapsed="0.000560"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:22:00.703896" elapsed="0.000648"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:00.705072" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:22:00.704678" elapsed="0.000521"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:22:00.704644" elapsed="0.000605"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:22:00.699518" elapsed="0.005780"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:22:00.699106" elapsed="0.006279"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:22:00.689639" elapsed="0.015984">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:22:01.714104" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:22:01.714233" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:22:01.714533" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:22:01.708002" elapsed="0.007570">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:22:01.716231" elapsed="0.000050"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:01.717230" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:01.717768" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:01.718209" elapsed="0.000041"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:01.718695" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:01.719136" elapsed="0.000041"/>
</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-10-20T23:22:01.719656" elapsed="0.000044"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:01.720253" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:22:01.719857" elapsed="0.000538"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:22:01.719815" elapsed="0.000649"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:01.721002" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:22:01.720576" elapsed="0.000540"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:22:01.720544" elapsed="0.000621"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:01.721757" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:22:01.721272" elapsed="0.000599"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:22:01.721241" elapsed="0.000681"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:22:01.716840" elapsed="0.005131"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:22:01.716428" elapsed="0.005596"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:22:01.707014" elapsed="0.015213">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:22:02.730817" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:22:02.730940" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:22:02.731163" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:22:02.724451" elapsed="0.007759">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:22:02.732897" elapsed="0.000052"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:02.733927" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:02.734410" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:02.734870" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:02.735374" elapsed="0.000060"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:02.735868" elapsed="0.000042"/>
</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-10-20T23:22:02.736363" elapsed="0.000044"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:02.736966" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:22:02.736550" elapsed="0.000526"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:22:02.736513" elapsed="0.000616"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:02.737688" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:22:02.737238" elapsed="0.000564"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:22:02.737207" elapsed="0.000643"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:02.738412" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:22:02.737958" elapsed="0.000579"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:22:02.737926" elapsed="0.000661"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:22:02.733474" elapsed="0.005162"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:22:02.733067" elapsed="0.005653"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:22:02.723611" elapsed="0.015314">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:22:03.747143" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:22:03.747263" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:22:03.747536" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:22:03.740898" elapsed="0.007529">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:22:03.749131" elapsed="0.000051"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:03.750094" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:03.750582" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:03.751043" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:03.751517" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:03.751986" elapsed="0.000042"/>
</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-10-20T23:22:03.752476" elapsed="0.000043"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:03.753083" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:22:03.752661" elapsed="0.000535"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:22:03.752623" elapsed="0.000626"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:03.753807" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:22:03.753392" elapsed="0.000531"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:22:03.753357" elapsed="0.000616"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:03.754519" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:22:03.754083" elapsed="0.000551"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:22:03.754050" elapsed="0.000651"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:22:03.749706" elapsed="0.005047"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:22:03.749286" elapsed="0.005520"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:22:03.740029" elapsed="0.014974">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:22:04.763169" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:22:04.763298" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:22:04.763576" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:22:04.757201" elapsed="0.007358">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:22:04.765212" elapsed="0.000050"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:04.766215" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:04.766734" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:04.767183" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:04.767658" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:04.768123" elapsed="0.000042"/>
</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-10-20T23:22:04.768608" elapsed="0.000042"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:04.769230" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:22:04.768831" elapsed="0.000669"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:22:04.768778" elapsed="0.000791"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:04.770161" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:22:04.769703" elapsed="0.000571"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:22:04.769664" elapsed="0.000688"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:04.770904" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:22:04.770465" elapsed="0.000551"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:22:04.770432" elapsed="0.000633"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:22:04.765803" elapsed="0.005310"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:22:04.765407" elapsed="0.005761"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:22:04.756291" elapsed="0.015111">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<msg time="2026-10-20T23:22:04.771594" level="FAIL">Keyword 'FlowLib.Check Linear Topology' failed after retrying for 30 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</msg>
<arg>30s</arg>
<arg>1s</arg>
<arg>FlowLib.Check Linear Topology</arg>
<arg>${SWITCHES}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-10-20T23:21:34.270700" elapsed="30.501111">Keyword 'FlowLib.Check Linear Topology' failed after retrying for 30 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<doc>Check Linear Topology.</doc>
<status status="FAIL" start="2026-10-20T23:21:34.270014" elapsed="30.502132">Keyword 'FlowLib.Check Linear Topology' failed after retrying for 30 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</test>
<test id="s1-s5-s1-t13" name="Remove Flows And Groups After Mininet Reconnects" line="93">
<for flavor="IN RANGE">
<iter>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:22:04.780045" level="INFO">DELETE Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:22:04.780141" level="INFO">DELETE Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1 
 status=404, reason=Not Found 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-10-20T23:22:04.780363" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1</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="FAIL" start="2026-10-20T23:22:04.774748" elapsed="0.006329">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1</status>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<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="NOT RUN" start="2026-10-20T23:22:04.781516" elapsed="0.000078"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<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="NOT RUN" start="2026-10-20T23:22:04.781949" elapsed="0.000041"/>
</kw>
<var name="${switch}">1</var>
<status status="FAIL" start="2026-10-20T23:22:04.774419" elapsed="0.007682">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1</status>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="FAIL" start="2026-10-20T23:22:04.773894" elapsed="0.008322">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1</status>
</for>
<doc>Remove some groups and flows while network is down.</doc>
<status status="FAIL" start="2026-10-20T23:22:04.772970" elapsed="0.009574">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1</status>
</test>
<test id="s1-s5-s1-t14" name="Check Flows In Operational DS After Mininet Reconnects" line="107">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:22:04.792146" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:22:04.792256" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:22:04.792510" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:22:04.786959" elapsed="0.006389">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:22:04.793990" elapsed="0.000049"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:04.794462" elapsed="0.000044"/>
</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="NOT RUN" start="2026-10-20T23:22:04.794957" elapsed="0.000042"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:22:04.786214" elapsed="0.008972">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:22:05.802250" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:22:05.802412" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:22:05.802621" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:22:05.796732" elapsed="0.006769">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:22:05.804106" elapsed="0.000056"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:05.804584" elapsed="0.000044"/>
</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="NOT RUN" start="2026-10-20T23:22:05.805066" elapsed="0.000043"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:22:05.795934" elapsed="0.009362">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:22:06.812839" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:22:06.812977" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:22:06.813211" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:22:06.807012" elapsed="0.007122">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:22:06.814855" elapsed="0.000057"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:06.815303" elapsed="0.000084"/>
</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="NOT RUN" start="2026-10-20T23:22:06.815822" elapsed="0.000044"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:22:06.806151" elapsed="0.009906">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:22:07.823620" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:22:07.823747" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:22:07.824119" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:22:07.817870" elapsed="0.007189">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:22:07.825710" elapsed="0.000050"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:07.826170" elapsed="0.000044"/>
</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="NOT RUN" start="2026-10-20T23:22:07.826666" elapsed="0.000043"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:22:07.816974" elapsed="0.009957">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:22:08.835507" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:22:08.835628" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:22:08.835904" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:22:08.829274" elapsed="0.007524">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:22:08.837444" elapsed="0.000050"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:08.837901" elapsed="0.000045"/>
</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="NOT RUN" start="2026-10-20T23:22:08.838392" elapsed="0.000045"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:22:08.827799" elapsed="0.010832">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:22:09.846694" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:22:09.846827" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:22:09.847096" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:22:09.840779" elapsed="0.007323">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:22:09.848785" elapsed="0.000051"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:09.849257" elapsed="0.000044"/>
</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="NOT RUN" start="2026-10-20T23:22:09.849751" elapsed="0.000042"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:22:09.839783" elapsed="0.010229">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:22:10.858147" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:22:10.858463" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:22:10.858708" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:22:10.852143" elapsed="0.007566">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:22:10.860396" elapsed="0.000051"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:10.860833" elapsed="0.000043"/>
</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="NOT RUN" start="2026-10-20T23:22:10.861349" elapsed="0.000046"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:22:10.851139" elapsed="0.010457">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:22:11.869342" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:22:11.869475" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:22:11.869704" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:22:11.863522" elapsed="0.007181">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:22:11.871391" elapsed="0.000051"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:11.871831" elapsed="0.000043"/>
</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="NOT RUN" start="2026-10-20T23:22:11.872338" elapsed="0.000044"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:22:11.862596" elapsed="0.009984">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:22:12.880344" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:22:12.880468" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:22:12.880693" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:22:12.874193" elapsed="0.007391">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:22:12.882184" elapsed="0.000050"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:12.882651" elapsed="0.000043"/>
</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="NOT RUN" start="2026-10-20T23:22:12.883126" elapsed="0.000160"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:22:12.873393" elapsed="0.010132">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:22:13.890545" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:22:13.890666" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:22:13.890873" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:22:13.885135" elapsed="0.006627">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:22:13.892431" elapsed="0.000057"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:13.892887" elapsed="0.000043"/>
</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="NOT RUN" start="2026-10-20T23:22:13.893452" elapsed="0.000044"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:22:13.884357" elapsed="0.009330">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:22:14.901444" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:22:14.901565" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:22:14.901771" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:22:14.895302" elapsed="0.007364">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:22:14.903258" elapsed="0.000078"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:14.903724" elapsed="0.000045"/>
</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="NOT RUN" start="2026-10-20T23:22:14.904206" elapsed="0.000043"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:22:14.894517" elapsed="0.009949">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:22:15.912398" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:22:15.912527" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:22:15.912760" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:22:15.906500" elapsed="0.007367">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:22:15.914558" elapsed="0.000049"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:15.914997" elapsed="0.000043"/>
</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="NOT RUN" start="2026-10-20T23:22:15.915510" elapsed="0.000044"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:22:15.905533" elapsed="0.010221">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:22:16.923686" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:22:16.923813" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:22:16.924045" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:22:16.917727" elapsed="0.010621">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:22:16.928982" elapsed="0.000050"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:16.929470" elapsed="0.000046"/>
</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="NOT RUN" start="2026-10-20T23:22:16.929933" elapsed="0.000043"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:22:16.916784" elapsed="0.013476">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:22:17.937847" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:22:17.937974" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:22:17.938225" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:22:17.932069" elapsed="0.007117">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:22:17.939832" elapsed="0.000050"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:17.940293" elapsed="0.000071"/>
</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="NOT RUN" start="2026-10-20T23:22:17.940784" elapsed="0.000072"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:22:17.931187" elapsed="0.009869">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:22:18.948483" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:22:18.948607" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:22:18.948958" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:22:18.942822" elapsed="0.007069">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:22:18.950538" elapsed="0.000050"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:18.950979" elapsed="0.000043"/>
</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="NOT RUN" start="2026-10-20T23:22:18.951489" elapsed="0.000043"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:22:18.941923" elapsed="0.009809">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:22:19.959015" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:22:19.959139" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:22:19.959429" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:22:19.953451" elapsed="0.006925">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:22:19.960976" elapsed="0.000049"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:19.961465" elapsed="0.000043"/>
</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="NOT RUN" start="2026-10-20T23:22:19.961924" elapsed="0.000042"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:22:19.952592" elapsed="0.009567">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:22:20.969547" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:22:20.969671" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:22:20.969891" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:22:20.963884" elapsed="0.006932">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:22:20.971481" elapsed="0.000051"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:20.971919" elapsed="0.000042"/>
</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="NOT RUN" start="2026-10-20T23:22:20.972423" elapsed="0.000045"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:22:20.962997" elapsed="0.009666">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:22:21.981524" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:22:21.981797" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:22:21.982057" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:22:21.975628" elapsed="0.007441">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:22:21.983788" elapsed="0.000049"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:21.984223" elapsed="0.000109"/>
</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="NOT RUN" start="2026-10-20T23:22:21.984755" elapsed="0.000042"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:22:21.973858" elapsed="0.011139">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:22:22.992407" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:22:22.992533" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:22:22.992750" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:22:22.986702" elapsed="0.006961">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:22:22.994248" elapsed="0.000049"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:22.994733" elapsed="0.000044"/>
</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="NOT RUN" start="2026-10-20T23:22:22.995196" elapsed="0.000041"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:22:22.985870" elapsed="0.009602">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:22:24.002555" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:22:24.002679" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:22:24.002893" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:22:23.997122" elapsed="0.006702">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:22:24.004452" elapsed="0.000051"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:24.004893" elapsed="0.000044"/>
</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="NOT RUN" start="2026-10-20T23:22:24.005403" elapsed="0.000164"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:22:23.996278" elapsed="0.009492">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:22:25.013023" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:22:25.013149" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:22:25.013427" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:22:25.007501" elapsed="0.006787">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:22:25.014936" elapsed="0.000049"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:25.015420" elapsed="0.000047"/>
</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="NOT RUN" start="2026-10-20T23:22:25.015905" elapsed="0.000048"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:22:25.006644" elapsed="0.009507">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:22:26.023202" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:22:26.023435" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:22:26.024232" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:22:26.017802" elapsed="0.007341">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:22:26.025780" elapsed="0.000050"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:26.026217" elapsed="0.000043"/>
</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="NOT RUN" start="2026-10-20T23:22:26.026744" elapsed="0.000061"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:22:26.016934" elapsed="0.010137">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:22:27.034955" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:22:27.035084" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:22:27.035355" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:22:27.029081" elapsed="0.007442">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:22:27.037165" elapsed="0.000053"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:27.037757" elapsed="0.000049"/>
</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="NOT RUN" start="2026-10-20T23:22:27.038237" elapsed="0.000042"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:22:27.028115" elapsed="0.010447">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:22:28.046668" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:22:28.046801" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:22:28.047042" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:22:28.040731" elapsed="0.007326">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:22:28.048757" elapsed="0.000049"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:28.049201" elapsed="0.000043"/>
</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="NOT RUN" start="2026-10-20T23:22:28.049712" elapsed="0.000043"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:22:28.039723" elapsed="0.010232">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:22:29.056751" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:22:29.056883" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:22:29.057116" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:22:29.051686" elapsed="0.006427">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:22:29.058802" elapsed="0.000055"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:29.059280" elapsed="0.000090"/>
</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="NOT RUN" start="2026-10-20T23:22:29.059858" elapsed="0.000048"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:22:29.050831" elapsed="0.009284">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:22:30.067164" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:22:30.067285" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:22:30.067712" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:22:30.061813" elapsed="0.006804">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:22:30.069197" elapsed="0.000049"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:30.069689" elapsed="0.000046"/>
</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="NOT RUN" start="2026-10-20T23:22:30.070154" elapsed="0.000043"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:22:30.060953" elapsed="0.009468">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:22:31.078816" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:22:31.078947" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:22:31.079191" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:22:31.072948" elapsed="0.007191">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:22:31.080804" elapsed="0.000051"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:31.081241" elapsed="0.000043"/>
</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="NOT RUN" start="2026-10-20T23:22:31.081753" elapsed="0.000044"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:22:31.072055" elapsed="0.009938">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:22:32.090990" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:22:32.091131" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:22:32.091447" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:22:32.084590" elapsed="0.008010">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:22:32.093406" elapsed="0.000057"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:32.093897" elapsed="0.000047"/>
</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="NOT RUN" start="2026-10-20T23:22:32.094413" elapsed="0.000049"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:22:32.083290" elapsed="0.011419">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:22:33.103091" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:22:33.103403" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:22:33.103675" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:22:33.096918" elapsed="0.007769">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:22:33.105361" elapsed="0.000050"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:33.105814" elapsed="0.000055"/>
</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="NOT RUN" start="2026-10-20T23:22:33.106285" elapsed="0.000068"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:22:33.095912" elapsed="0.010648">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:22:34.116055" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:22:34.116242" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:22:34.116630" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:22:34.109184" elapsed="0.008913">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:22:34.119118" elapsed="0.000068"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:34.119817" elapsed="0.000067"/>
</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="NOT RUN" start="2026-10-20T23:22:34.120570" elapsed="0.000073"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:22:34.107894" elapsed="0.013086">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:22:35.130682" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:22:35.131004" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:22:35.131272" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:22:35.123293" elapsed="0.009047">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:22:35.133009" elapsed="0.000051"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:35.133483" elapsed="0.000044"/>
</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="NOT RUN" start="2026-10-20T23:22:35.133966" elapsed="0.000173"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:22:35.122273" elapsed="0.012112">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<msg time="2026-10-20T23:22:35.134580" level="FAIL">Keyword 'FlowLib.Check Number Of Flows' failed after retrying for 30 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</msg>
<arg>30s</arg>
<arg>1s</arg>
<arg>FlowLib.Check Number Of Flows</arg>
<arg>${less_flows}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-10-20T23:22:04.784423" elapsed="30.350372">Keyword 'FlowLib.Check Number Of Flows' failed after retrying for 30 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<doc>Check Flows after mininet starts.</doc>
<status status="FAIL" start="2026-10-20T23:22:04.783207" elapsed="30.351934">Keyword 'FlowLib.Check Number Of Flows' failed after retrying for 30 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</test>
<test id="s1-s5-s1-t15" name="Check Groups In Operational DS After Mininet Reconnects" line="111">
<kw name="Check Number Of Groups" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:22:35.143401" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:22:35.143511" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:22:35.143703" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:22:35.137935" elapsed="0.006609">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:22:35.145155" elapsed="0.000047"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${group_count}</var>
<arg>${resp.text}</arg>
<arg>"group-type"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:35.145613" elapsed="0.000043"/>
</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="NOT RUN" start="2026-10-20T23:22:35.146088" elapsed="0.000042"/>
</kw>
<arg>${less_groups}</arg>
<doc>Check number of groups in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:22:35.137195" elapsed="0.009143">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<doc>Check Flows after mininet starts.</doc>
<status status="FAIL" start="2026-10-20T23:22:35.135965" elapsed="0.010639">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</test>
<test id="s1-s5-s1-t16" name="Check Flows In Switch After Mininet Reconnects" line="115">
<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-10-20T23:22:35.149727" elapsed="0.000272"/>
</kw>
<status status="PASS" start="2026-10-20T23:22:35.149160" elapsed="0.000913"/>
</branch>
<status status="PASS" start="2026-10-20T23:22:35.149107" elapsed="0.001028"/>
</if>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:22:35.151346" 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 variable.</doc>
<status status="PASS" start="2026-10-20T23:22:35.150615" elapsed="0.000794"/>
</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-10-20T23:22:35.153174" elapsed="0.000278"/>
</kw>
<status status="PASS" start="2026-10-20T23:22:35.152676" elapsed="0.000850"/>
</branch>
<status status="PASS" start="2026-10-20T23:22:35.152637" elapsed="0.000943"/>
</if>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-20T23:22:35.158544" 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-10-20T23:22:35.153926" elapsed="0.004738"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-10-20T23:22:35.271089" level="INFO">*** s1 ------------------------------------------------------------------------
OFPST_AGGREGATE reply (OF1.3) (xid=0x2): packet_count=60 byte_count=4727 flow_count=4
*** s2 ------------------------------------------------------------------------
OFPST_AGGREGATE reply (OF1.3) (xid=0x2): packet_count=87 byte_count=7018 flow_count=5
*** s3 ------------------------------------------------------------------------
OFPST_AGGREGATE reply (OF1.3) (xid=0x2): packet_count=59 byte_count=4641 flow_count=4
mininet&gt;</msg>
<msg time="2026-10-20T23:22:35.271447" level="INFO">${output} = *** s1 ------------------------------------------------------------------------
OFPST_AGGREGATE reply (OF1.3) (xid=0x2): packet_count=60 byte_count=4727 flow_count=4
*** 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-10-20T23:22:35.159051" elapsed="0.112428"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-20T23:22:35.271602" elapsed="0.000085"/>
</return>
<msg time="2026-10-20T23:22:35.271869" level="INFO">${output} = *** s1 ------------------------------------------------------------------------
OFPST_AGGREGATE reply (OF1.3) (xid=0x2): packet_count=60 byte_count=4727 flow_count=4
*** s2 ------------------------...</msg>
<var>${output}</var>
<arg>${mininet_conn}</arg>
<arg>${cmd}</arg>
<doc>Sends Command dpctl dump-aggregate -O OpenFlow13 to Mininet session 5 and returns read buffer response.</doc>
<status status="PASS" start="2026-10-20T23:22:35.152061" elapsed="0.119977"/>
</kw>
<kw name="Get Regexp Matches" owner="String">
<msg time="2026-10-20T23:22:35.272895" level="INFO">${flows} = ['4', '5', '4']</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-10-20T23:22:35.272506" elapsed="0.000414"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:22:35.273654" level="INFO">${total_flows} = 13</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-10-20T23:22:35.273105" elapsed="0.000575"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<msg time="2026-10-20T23:22:35.274394" level="FAIL">13.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-10-20T23:22:35.273992" elapsed="0.000485">13.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-10-20T23:22:35.148465" elapsed="0.126122">13.0 != 300.0</status>
</kw>
<doc>Check Flows after mininet starts.</doc>
<status status="FAIL" start="2026-10-20T23:22:35.147156" elapsed="0.127609">13.0 != 300.0</status>
</test>
<test id="s1-s5-s1-t17" name="Restart Controller" line="119">
<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-10-20T23:22:35.277972" 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-10-20T23:22:35.277617" elapsed="0.000381"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:22:35.278442" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:22:35.278153" elapsed="0.000313"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-20T23:22:35.278510" elapsed="0.000030"/>
</return>
<msg time="2026-10-20T23:22:35.278645" 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-10-20T23:22:35.277222" elapsed="0.001447"/>
</kw>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:22:35.279588" 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-10-20T23:22:35.279239" elapsed="0.000374"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:22:35.280046" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:22:35.279778" elapsed="0.000292"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-20T23:22:35.280111" elapsed="0.000026"/>
</return>
<msg time="2026-10-20T23:22:35.280238" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${original_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-10-20T23:22:35.278877" elapsed="0.001385"/>
</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-10-20T23:22:35.281603" 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-10-20T23:22:35.281260" elapsed="0.000368"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:22:35.282057" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:22:35.281792" elapsed="0.000289"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-20T23:22:35.282121" elapsed="0.000028"/>
</return>
<msg time="2026-10-20T23:22:35.282250" 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-10-20T23:22:35.280904" elapsed="0.001369"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-10-20T23:22:35.283285" level="INFO">${member_ip} = 10.30.170.223</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="PASS" start="2026-10-20T23:22:35.283057" elapsed="0.000268"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:22:35.284130" level="INFO">index=5
host=10.30.170.219
alias=None
port=22
timeout=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-10-20T23:22:35.284222" level="INFO">${current_connection} = index=5
host=10.30.170.219
alias=None
port=22
timeout=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-10-20T23:22:35.283982" 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 or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:35.287686" elapsed="0.000159"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:22:35.286895" elapsed="0.001034"/>
</branch>
<status status="PASS" start="2026-10-20T23:22:35.286873" elapsed="0.001144"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:22:35.288376" level="INFO">index=5
host=10.30.170.219
alias=None
port=22
timeout=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-10-20T23:22:35.288629" level="INFO">${current_ssh_connection} = index=5
host=10.30.170.219
alias=None
port=22
timeout=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-10-20T23:22:35.288257" elapsed="0.000503"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:22:35.289787" level="INFO">Attempting to execute command "/tmp/karaf-0.25.0/bin/stop" on remote system "10.30.170.223" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:22:35.289077" elapsed="0.000773"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:22:35.290931" level="INFO">${conn_id} = 10</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-20T23:22:35.290148" elapsed="0.000899"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-20T23:22:35.293418" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:22:35.293615" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-20T23:22:35.292975" elapsed="0.000684"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:22:35.294428" elapsed="0.000475"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:22:35.296537" level="INFO">Logging into '10.30.170.223:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:22:35.925920" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-194-generic x86_64)

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

 System information as of Tue Oct 20 23:22:35 UTC 2026

  System load:  0.02               Processes:             120
  Usage of /:   14.0% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.170.223
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Tue Oct 20 23:21:34 2026 from 10.30.170.114
[?2004h[jenkins@releng-34016-79-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-10-20T23:22:35.296276" elapsed="0.629901"/>
</kw>
<msg time="2026-10-20T23:22:35.926459" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:22:35.295793" elapsed="0.630845"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-10-20T23:22:35.291517" elapsed="0.635393"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:22:35.927936" level="INFO">Executing command '/tmp/karaf-0.25.0/bin/stop'.</msg>
<msg time="2026-10-20T23:22:36.327534" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:22:36.328405" level="INFO">${stdout} = </msg>
<msg time="2026-10-20T23:22:36.328812" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:22:35.927436" elapsed="0.401629"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:22:36.330235" elapsed="0.000921"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:22:36.334598" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:22:36.332830" elapsed="0.001909"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:22:36.335663" elapsed="0.000106"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:22:36.335222" elapsed="0.000690"/>
</branch>
<status status="PASS" start="2026-10-20T23:22:36.335162" 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-10-20T23:22:36.336657" elapsed="0.000138"/>
</return>
<status status="PASS" start="2026-10-20T23:22:36.336353" elapsed="0.000587"/>
</branch>
<status status="PASS" start="2026-10-20T23:22:36.336284" elapsed="0.000852"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:22:36.337364" 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-10-20T23:22:36.344459" elapsed="0.000330"/>
</kw>
<msg time="2026-10-20T23:22:36.344960" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:22:36.342517" elapsed="0.002671"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:36.348052" elapsed="0.000140"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:36.350821" elapsed="0.000132"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-10-20T23:22:36.338168" elapsed="0.013112"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-10-20T23:22:35.286269" elapsed="1.065570"/>
</kw>
<msg time="2026-10-20T23:22:36.351960" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:22:35.285373" elapsed="1.066700"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-10-20T23:22:35.284901" elapsed="1.067349"/>
</kw>
<msg time="2026-10-20T23:22:36.352420" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:22:35.284418" elapsed="1.068113"/>
</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-10-20T23:22:36.356198" elapsed="0.000353"/>
</kw>
<msg time="2026-10-20T23:22:36.356652" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:22:36.354918" elapsed="0.001893"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:36.357221" elapsed="0.000048"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:36.357730" 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-10-20T23:22:36.353235" elapsed="0.004722"/>
</kw>
<msg time="2026-10-20T23:22:36.358158" 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-10-20T23:22:35.283533" elapsed="1.074679"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:22:36.359671" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:22:36.358884" elapsed="0.000898"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-20T23:22:36.359880" elapsed="0.000067"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-10-20T23:22:35.282662" elapsed="1.077459"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-10-20T23:22:35.282486" elapsed="1.077713"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-10-20T23:22:35.282354" elapsed="1.077920"/>
</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-10-20T23:22:35.280470" elapsed="1.079958"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:22:36.361446" level="INFO">${updated_index_list} = [1]</msg>
<var>${updated_index_list}</var>
<arg>@{index_list}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:22:36.360787" elapsed="0.000716"/>
</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-10-20T23:22:36.361869" elapsed="0.000382"/>
</kw>
<if>
<branch type="IF" condition="not ${confirm}">
<return>
<value>${updated_index_list}</value>
<status status="NOT RUN" start="2026-10-20T23:22:36.362643" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:22:36.362443" elapsed="0.000293"/>
</branch>
<status status="PASS" start="2026-10-20T23:22:36.362401" elapsed="0.000412"/>
</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-10-20T23:22:36.366992" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:22:36.366378" elapsed="0.000673"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-10-20T23:22:36.368891" level="INFO">${member_ip} = 10.30.170.223</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="PASS" start="2026-10-20T23:22:36.368380" elapsed="0.000566"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:22:36.370672" level="INFO">index=5
host=10.30.170.219
alias=None
port=22
timeout=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-10-20T23:22:36.370904" level="INFO">${current_connection} = index=5
host=10.30.170.219
alias=None
port=22
timeout=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-10-20T23:22:36.370404" elapsed="0.000557"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:36.377399" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:22:36.376272" elapsed="0.001227"/>
</branch>
<status status="PASS" start="2026-10-20T23:22:36.376241" elapsed="0.001294"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:22:36.378016" level="INFO">index=5
host=10.30.170.219
alias=None
port=22
timeout=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-10-20T23:22:36.378164" level="INFO">${current_ssh_connection} = index=5
host=10.30.170.219
alias=None
port=22
timeout=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-10-20T23:22:36.377833" elapsed="0.000368"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:22:36.378980" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.170.223" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:22:36.378509" elapsed="0.000536"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:22:36.379825" level="INFO">${conn_id} = 11</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-20T23:22:36.379302" elapsed="0.000560"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-20T23:22:36.381168" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:22:36.381269" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-20T23:22:36.380744" elapsed="0.000556"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:22:36.381726" elapsed="0.000451"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:22:36.383374" level="INFO">Logging into '10.30.170.223:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:22:36.812207" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-194-generic x86_64)

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

 System information as of Tue Oct 20 23:22:35 UTC 2026

  System load:  0.02               Processes:             120
  Usage of /:   14.0% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.170.223
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Tue Oct 20 23:22:35 2026 from 10.30.170.114
[?2004h[jenkins@releng-34016-79-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-10-20T23:22:36.383005" elapsed="0.429526"/>
</kw>
<msg time="2026-10-20T23:22:36.812681" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:22:36.382447" elapsed="0.430412"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-10-20T23:22:36.380156" elapsed="0.432895"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:22:36.814001" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-10-20T23:22:36.837990" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:22:36.838355" level="INFO">${stdout} = 1</msg>
<msg time="2026-10-20T23:22:36.838428" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:22:36.813564" elapsed="0.024902"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:22:36.838935" elapsed="0.000613"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:22:36.840760" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:22:36.840105" elapsed="0.000751"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:22:36.841343" elapsed="0.000040"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:22:36.841028" elapsed="0.000419"/>
</branch>
<status status="PASS" start="2026-10-20T23:22:36.840971" 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-10-20T23:22:36.841801" elapsed="0.000070"/>
</return>
<status status="PASS" start="2026-10-20T23:22:36.841599" elapsed="0.000334"/>
</branch>
<status status="PASS" start="2026-10-20T23:22:36.841568" elapsed="0.000409"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:22:36.842042" elapsed="0.000027"/>
</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-10-20T23:22:36.844621" elapsed="0.000282"/>
</kw>
<msg time="2026-10-20T23:22:36.844980" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:22:36.843637" 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-10-20T23:22:36.845510" elapsed="0.000043"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:36.845991" elapsed="0.000039"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-10-20T23:22:36.842713" elapsed="0.003431"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-10-20T23:22:36.375372" elapsed="0.471139"/>
</kw>
<msg time="2026-10-20T23:22:36.846644" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:22:36.373063" elapsed="0.473856"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-10-20T23:22:36.372183" elapsed="0.475114"/>
</kw>
<msg time="2026-10-20T23:22:36.847428" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:22:36.371396" elapsed="0.476119"/>
</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-10-20T23:22:36.850262" elapsed="0.000351"/>
</kw>
<msg time="2026-10-20T23:22:36.850848" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:22:36.848878" elapsed="0.002079"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:36.851538" elapsed="0.000048"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:36.851877" elapsed="0.000036"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-10-20T23:22:36.848078" elapsed="0.003940"/>
</kw>
<msg time="2026-10-20T23:22:36.852177" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-10-20T23:22:36.369413" elapsed="0.482810"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:22:36.853255" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:22:36.852807" elapsed="0.000583"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-20T23:22:36.853469" elapsed="0.000054"/>
</return>
<msg time="2026-10-20T23:22:36.853728" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-10-20T23:22:36.367486" elapsed="0.486305"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-10-20T23:22:36.853879" elapsed="0.000047"/>
</return>
<msg time="2026-10-20T23:22:36.854123" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-10-20T23:22:36.365588" elapsed="0.488580"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-10-20T23:22:36.855352" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-10-20T23:22:36.854579" elapsed="0.000913">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-10-20T23:22:36.364764" elapsed="0.490939">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:22:38.860183" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:22:38.859253" elapsed="0.001012"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-10-20T23:22:38.862369" level="INFO">${member_ip} = 10.30.170.223</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="PASS" start="2026-10-20T23:22:38.861753" elapsed="0.000678"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:22:38.864464" level="INFO">index=5
host=10.30.170.219
alias=None
port=22
timeout=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-10-20T23:22:38.864689" level="INFO">${current_connection} = index=5
host=10.30.170.219
alias=None
port=22
timeout=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-10-20T23:22:38.864103" 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 or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:38.875614" elapsed="0.000080"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:22:38.874421" elapsed="0.001644"/>
</branch>
<status status="PASS" start="2026-10-20T23:22:38.874240" elapsed="0.001947"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:22:38.877553" level="INFO">index=5
host=10.30.170.219
alias=None
port=22
timeout=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-10-20T23:22:38.877925" level="INFO">${current_ssh_connection} = index=5
host=10.30.170.219
alias=None
port=22
timeout=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-10-20T23:22:38.877044" elapsed="0.000969"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:22:38.879806" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.170.223" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:22:38.878736" elapsed="0.001243"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:22:38.881998" level="INFO">${conn_id} = 12</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-20T23:22:38.880627" elapsed="0.001433"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-20T23:22:38.884225" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:22:38.884426" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-20T23:22:38.883553" elapsed="0.000929"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:22:38.884878" elapsed="0.000767"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:22:38.887731" level="INFO">Logging into '10.30.170.223:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:22:39.275911" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-194-generic x86_64)

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

 System information as of Tue Oct 20 23:22:35 UTC 2026

  System load:  0.02               Processes:             120
  Usage of /:   14.0% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.170.223
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Tue Oct 20 23:22:36 2026 from 10.30.170.114
[?2004h[jenkins@releng-34016-79-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-10-20T23:22:38.887097" elapsed="0.389092"/>
</kw>
<msg time="2026-10-20T23:22:39.276338" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:22:38.886075" elapsed="0.390409"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-10-20T23:22:38.882598" elapsed="0.394050"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:22:39.277527" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-10-20T23:22:39.300950" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:22:39.301155" level="INFO">${stdout} = 1</msg>
<msg time="2026-10-20T23:22:39.301211" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:22:39.277118" elapsed="0.024123"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:22:39.301563" elapsed="0.000423"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:22:39.302961" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:22:39.302455" elapsed="0.000561"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:22:39.303428" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:22:39.303160" elapsed="0.000352"/>
</branch>
<status status="PASS" start="2026-10-20T23:22:39.303108" elapsed="0.000439"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-10-20T23:22:39.303739" elapsed="0.000045"/>
</return>
<status status="PASS" start="2026-10-20T23:22:39.303619" elapsed="0.000208"/>
</branch>
<status status="PASS" start="2026-10-20T23:22:39.303599" elapsed="0.000279"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:22:39.303925" elapsed="0.000019"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-10-20T23:22:39.306129" elapsed="0.000200"/>
</kw>
<msg time="2026-10-20T23:22:39.306388" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:22:39.305185" elapsed="0.001298"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:39.306745" elapsed="0.000029"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:39.306982" 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-10-20T23:22:39.304459" elapsed="0.002632"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-10-20T23:22:38.871671" elapsed="0.435818"/>
</kw>
<msg time="2026-10-20T23:22:39.307586" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:22:38.867790" elapsed="0.439979"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-10-20T23:22:38.866384" elapsed="0.441699"/>
</kw>
<msg time="2026-10-20T23:22:39.308141" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:22:38.865160" elapsed="0.443043"/>
</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-10-20T23:22:39.310036" elapsed="0.000253"/>
</kw>
<msg time="2026-10-20T23:22:39.310493" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:22:39.309185" elapsed="0.001394"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:39.310835" elapsed="0.000047"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:39.311070" 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-10-20T23:22:39.308612" elapsed="0.002560"/>
</kw>
<msg time="2026-10-20T23:22:39.311292" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-10-20T23:22:38.862944" elapsed="0.448435"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:22:39.312056" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:22:39.311718" elapsed="0.000396"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-20T23:22:39.312168" elapsed="0.000046"/>
</return>
<msg time="2026-10-20T23:22:39.312408" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-10-20T23:22:38.860776" elapsed="0.451665"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-10-20T23:22:39.312504" elapsed="0.000386"/>
</return>
<msg time="2026-10-20T23:22:39.313043" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-10-20T23:22:38.858260" elapsed="0.454816"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-10-20T23:22:39.313938" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-10-20T23:22:39.313370" elapsed="0.000691">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-10-20T23:22:38.856937" elapsed="0.457291">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:22:41.317864" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:22:41.316957" elapsed="0.001002"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-10-20T23:22:41.319981" level="INFO">${member_ip} = 10.30.170.223</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="PASS" start="2026-10-20T23:22:41.319377" elapsed="0.000664"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:22:41.321948" level="INFO">index=5
host=10.30.170.219
alias=None
port=22
timeout=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-10-20T23:22:41.322168" level="INFO">${current_connection} = index=5
host=10.30.170.219
alias=None
port=22
timeout=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-10-20T23:22:41.321626" elapsed="0.000600"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:41.330683" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:22:41.330003" elapsed="0.000810"/>
</branch>
<status status="PASS" start="2026-10-20T23:22:41.329950" elapsed="0.000933"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:22:41.331706" level="INFO">index=5
host=10.30.170.219
alias=None
port=22
timeout=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-10-20T23:22:41.332088" level="INFO">${current_ssh_connection} = index=5
host=10.30.170.219
alias=None
port=22
timeout=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-10-20T23:22:41.331451" elapsed="0.000696"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:22:41.333452" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.170.223" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:22:41.332722" elapsed="0.000831"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:22:41.334714" level="INFO">${conn_id} = 13</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-20T23:22:41.333981" elapsed="0.000788"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-20T23:22:41.339338" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:22:41.339510" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-20T23:22:41.336157" elapsed="0.003406"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:22:41.339980" elapsed="0.000723"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:22:41.342576" level="INFO">Logging into '10.30.170.223:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:22:41.726460" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-194-generic x86_64)

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

 System information as of Tue Oct 20 23:22:35 UTC 2026

  System load:  0.02               Processes:             120
  Usage of /:   14.0% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.170.223
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Tue Oct 20 23:22:39 2026 from 10.30.170.114
[?2004h[jenkins@releng-34016-79-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-10-20T23:22:41.342020" elapsed="0.384593"/>
</kw>
<msg time="2026-10-20T23:22:41.726695" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:22:41.341124" elapsed="0.385659"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-10-20T23:22:41.335237" elapsed="0.391659"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:22:41.727471" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-10-20T23:22:41.750624" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:22:41.750779" level="INFO">${stdout} = 1</msg>
<msg time="2026-10-20T23:22:41.750834" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:22:41.727209" elapsed="0.023654"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:22:41.751109" elapsed="0.000300"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:22:41.752221" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:22:41.751812" elapsed="0.000463"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:22:41.752586" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:22:41.752411" elapsed="0.000245"/>
</branch>
<status status="PASS" start="2026-10-20T23:22:41.752374" elapsed="0.000314"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-10-20T23:22:41.752875" elapsed="0.000036"/>
</return>
<status status="PASS" start="2026-10-20T23:22:41.752758" elapsed="0.000213"/>
</branch>
<status status="PASS" start="2026-10-20T23:22:41.752738" elapsed="0.000265"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:22:41.753047" elapsed="0.000019"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-10-20T23:22:41.755163" elapsed="0.000193"/>
</kw>
<msg time="2026-10-20T23:22:41.755413" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:22:41.754250" 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-10-20T23:22:41.755773" elapsed="0.000031"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:41.756017" 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-10-20T23:22:41.753567" elapsed="0.002560"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-10-20T23:22:41.328652" elapsed="0.427735"/>
</kw>
<msg time="2026-10-20T23:22:41.756547" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:22:41.325147" elapsed="0.431839"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-10-20T23:22:41.323789" elapsed="0.433496"/>
</kw>
<msg time="2026-10-20T23:22:41.757366" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:22:41.322616" elapsed="0.434814"/>
</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-10-20T23:22:41.759288" elapsed="0.000279"/>
</kw>
<msg time="2026-10-20T23:22:41.759749" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:22:41.758463" elapsed="0.001374"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:41.760111" elapsed="0.000029"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:41.760514" elapsed="0.000035"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-10-20T23:22:41.757862" elapsed="0.002774"/>
</kw>
<msg time="2026-10-20T23:22:41.760778" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-10-20T23:22:41.320537" elapsed="0.440275"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:22:41.761496" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:22:41.761146" elapsed="0.000408"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-20T23:22:41.761608" elapsed="0.000041"/>
</return>
<msg time="2026-10-20T23:22:41.761789" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-10-20T23:22:41.318438" elapsed="0.443383"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-10-20T23:22:41.761881" elapsed="0.000036"/>
</return>
<msg time="2026-10-20T23:22:41.762070" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-10-20T23:22:41.316071" elapsed="0.446031"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-10-20T23:22:41.762902" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-10-20T23:22:41.762399" elapsed="0.000624">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-10-20T23:22:41.314998" elapsed="0.448174">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:22:43.767039" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:22:43.766386" elapsed="0.000716"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-10-20T23:22:43.768706" level="INFO">${member_ip} = 10.30.170.223</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="PASS" start="2026-10-20T23:22:43.768255" elapsed="0.000500"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:22:43.770363" level="INFO">index=5
host=10.30.170.219
alias=None
port=22
timeout=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-10-20T23:22:43.770561" level="INFO">${current_connection} = index=5
host=10.30.170.219
alias=None
port=22
timeout=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-10-20T23:22:43.770083" elapsed="0.000533"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:43.778459" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:22:43.777779" elapsed="0.000800"/>
</branch>
<status status="PASS" start="2026-10-20T23:22:43.777727" elapsed="0.000916"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:22:43.779434" level="INFO">index=5
host=10.30.170.219
alias=None
port=22
timeout=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-10-20T23:22:43.779645" level="INFO">${current_ssh_connection} = index=5
host=10.30.170.219
alias=None
port=22
timeout=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-10-20T23:22:43.779096" elapsed="0.000607"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:22:43.780825" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.170.223" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:22:43.780160" elapsed="0.000970"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:22:43.782479" level="INFO">${conn_id} = 14</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-20T23:22:43.781647" elapsed="0.000894"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-20T23:22:43.784629" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:22:43.784784" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-20T23:22:43.783960" elapsed="0.000873"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:22:43.785186" elapsed="0.000688"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:22:43.787688" level="INFO">Logging into '10.30.170.223:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:22:44.173179" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-194-generic x86_64)

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

 System information as of Tue Oct 20 23:22:35 UTC 2026

  System load:  0.02               Processes:             120
  Usage of /:   14.0% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.170.223
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Tue Oct 20 23:22:41 2026 from 10.30.170.114
[?2004h[jenkins@releng-34016-79-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-10-20T23:22:43.787135" elapsed="0.386232"/>
</kw>
<msg time="2026-10-20T23:22:44.173457" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:22:43.786262" elapsed="0.387291"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-10-20T23:22:43.783047" elapsed="0.390624"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:22:44.174251" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-10-20T23:22:44.197043" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:22:44.197302" level="INFO">${stdout} = 1</msg>
<msg time="2026-10-20T23:22:44.197479" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:22:44.173983" elapsed="0.023542"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:22:44.197908" elapsed="0.000329"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:22:44.199252" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:22:44.198672" 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-10-20T23:22:44.199837" elapsed="0.000050"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:22:44.199532" elapsed="0.000402"/>
</branch>
<status status="PASS" start="2026-10-20T23:22:44.199482" 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-10-20T23:22:44.200190" elapsed="0.000044"/>
</return>
<status status="PASS" start="2026-10-20T23:22:44.200062" elapsed="0.000218"/>
</branch>
<status status="PASS" start="2026-10-20T23:22:44.200038" elapsed="0.000297"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:22:44.200384" 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-10-20T23:22:44.202863" elapsed="0.000414"/>
</kw>
<msg time="2026-10-20T23:22:44.203387" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:22:44.201642" elapsed="0.001897"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:44.203892" elapsed="0.000031"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:44.204138" 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-10-20T23:22:44.200872" elapsed="0.003380"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-10-20T23:22:43.776492" elapsed="0.428305"/>
</kw>
<msg time="2026-10-20T23:22:44.204981" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:22:43.773243" elapsed="0.432108"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-10-20T23:22:43.772074" elapsed="0.433699"/>
</kw>
<msg time="2026-10-20T23:22:44.205836" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:22:43.770950" elapsed="0.434954"/>
</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-10-20T23:22:44.208108" elapsed="0.000315"/>
</kw>
<msg time="2026-10-20T23:22:44.208599" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:22:44.207089" 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-10-20T23:22:44.208957" elapsed="0.000030"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:44.209409" elapsed="0.000036"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-10-20T23:22:44.206388" elapsed="0.003155"/>
</kw>
<msg time="2026-10-20T23:22:44.209670" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-10-20T23:22:43.769175" elapsed="0.440531"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:22:44.210453" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:22:44.210058" elapsed="0.000460"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-20T23:22:44.210579" elapsed="0.000042"/>
</return>
<msg time="2026-10-20T23:22:44.210771" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-10-20T23:22:43.767507" elapsed="0.443298"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-10-20T23:22:44.210868" elapsed="0.000038"/>
</return>
<msg time="2026-10-20T23:22:44.211131" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-10-20T23:22:43.765642" elapsed="0.445525"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-10-20T23:22:44.212043" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-10-20T23:22:44.211483" elapsed="0.000664">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-10-20T23:22:43.763933" elapsed="0.448417">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:22:46.216274" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:22:46.214956" elapsed="0.001411"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-10-20T23:22:46.218158" level="INFO">${member_ip} = 10.30.170.223</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="PASS" start="2026-10-20T23:22:46.217662" elapsed="0.000551"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:22:46.220027" level="INFO">index=5
host=10.30.170.219
alias=None
port=22
timeout=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-10-20T23:22:46.220257" level="INFO">${current_connection} = index=5
host=10.30.170.219
alias=None
port=22
timeout=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-10-20T23:22:46.219739" elapsed="0.000601"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:46.228824" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:22:46.227954" elapsed="0.000997"/>
</branch>
<status status="PASS" start="2026-10-20T23:22:46.227906" elapsed="0.001102"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:22:46.229756" level="INFO">index=5
host=10.30.170.219
alias=None
port=22
timeout=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-10-20T23:22:46.229962" level="INFO">${current_ssh_connection} = index=5
host=10.30.170.219
alias=None
port=22
timeout=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-10-20T23:22:46.229523" elapsed="0.000493"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:22:46.231187" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.170.223" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:22:46.230513" elapsed="0.000770"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:22:46.232574" level="INFO">${conn_id} = 15</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-20T23:22:46.231810" elapsed="0.000819"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-20T23:22:46.234541" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:22:46.234695" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-20T23:22:46.233919" elapsed="0.000825"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:22:46.235099" elapsed="0.000678"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:22:46.237569" level="INFO">Logging into '10.30.170.223:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:22:46.627181" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-194-generic x86_64)

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

 System information as of Tue Oct 20 23:22:35 UTC 2026

  System load:  0.02               Processes:             120
  Usage of /:   14.0% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.170.223
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Tue Oct 20 23:22:44 2026 from 10.30.170.114
[?2004h[jenkins@releng-34016-79-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-10-20T23:22:46.237012" elapsed="0.390337"/>
</kw>
<msg time="2026-10-20T23:22:46.627434" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:22:46.236165" elapsed="0.391357"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-10-20T23:22:46.233091" elapsed="0.394547"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:22:46.628204" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-10-20T23:22:46.651023" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:22:46.651185" level="INFO">${stdout} = 0</msg>
<msg time="2026-10-20T23:22:46.651241" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:22:46.627943" elapsed="0.023328"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:22:46.651527" elapsed="0.000284"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:22:46.652612" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:22:46.652195" elapsed="0.000471"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:22:46.652952" elapsed="0.000025"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:22:46.652779" elapsed="0.000243"/>
</branch>
<status status="PASS" start="2026-10-20T23:22:46.652743" elapsed="0.000311"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-10-20T23:22:46.653260" elapsed="0.000033"/>
</return>
<status status="PASS" start="2026-10-20T23:22:46.653144" elapsed="0.000213"/>
</branch>
<status status="PASS" start="2026-10-20T23:22:46.653122" elapsed="0.000268"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:22:46.653437" elapsed="0.000019"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-10-20T23:22:46.655372" elapsed="0.000175"/>
</kw>
<msg time="2026-10-20T23:22:46.655602" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:22:46.654503" elapsed="0.001186"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:46.655938" elapsed="0.000028"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:46.656169" 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-10-20T23:22:46.653871" elapsed="0.002402"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-10-20T23:22:46.226588" elapsed="0.429921"/>
</kw>
<msg time="2026-10-20T23:22:46.656602" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:22:46.223036" elapsed="0.433746"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-10-20T23:22:46.221779" elapsed="0.435280"/>
</kw>
<msg time="2026-10-20T23:22:46.657194" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:22:46.220691" elapsed="0.436567"/>
</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-10-20T23:22:46.659233" elapsed="0.000275"/>
</kw>
<msg time="2026-10-20T23:22:46.659686" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:22:46.658369" 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-10-20T23:22:46.660167" elapsed="0.000030"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:46.660432" 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-10-20T23:22:46.657760" elapsed="0.002779"/>
</kw>
<msg time="2026-10-20T23:22:46.660656" 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-10-20T23:22:46.218688" elapsed="0.442001"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:22:46.661476" level="INFO">0</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:22:46.661009" elapsed="0.000540"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-20T23:22:46.661605" elapsed="0.000038"/>
</return>
<msg time="2026-10-20T23:22:46.661785" 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-10-20T23:22:46.216787" elapsed="0.445031"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-10-20T23:22:46.661878" elapsed="0.000034"/>
</return>
<msg time="2026-10-20T23:22:46.662044" 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-10-20T23:22:46.214167" elapsed="0.447909"/>
</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-10-20T23:22:46.662370" elapsed="0.000614"/>
</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-10-20T23:22:46.213123" elapsed="0.449947"/>
</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-10-20T23:22:36.363613" elapsed="10.299534"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-10-20T23:22:36.363160" elapsed="10.300036"/>
</iter>
<var>${index}</var>
<value>@{stop_index_list}</value>
<status status="PASS" start="2026-10-20T23:22:36.362903" elapsed="10.300338"/>
</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-10-20T23:22:46.665130" 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-10-20T23:22:46.664647" elapsed="0.000518"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:22:46.665770" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:22:46.665400" elapsed="0.000404"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-20T23:22:46.665860" elapsed="0.000037"/>
</return>
<msg time="2026-10-20T23:22:46.666034" 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-10-20T23:22:46.664111" elapsed="0.001954"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-10-20T23:22:46.667406" level="INFO">${member_ip} = 10.30.170.223</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="PASS" start="2026-10-20T23:22:46.667069" elapsed="0.000372"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:22:46.668758" level="INFO">index=5
host=10.30.170.219
alias=None
port=22
timeout=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-10-20T23:22:46.668883" level="INFO">${current_connection} = index=5
host=10.30.170.219
alias=None
port=22
timeout=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-10-20T23:22:46.668606" 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 or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:46.673150" elapsed="0.000112"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:22:46.672108" elapsed="0.001295"/>
</branch>
<status status="PASS" start="2026-10-20T23:22:46.672067" elapsed="0.001453"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:22:46.673981" level="INFO">index=5
host=10.30.170.219
alias=None
port=22
timeout=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-10-20T23:22:46.674428" level="INFO">${current_ssh_connection} = index=5
host=10.30.170.219
alias=None
port=22
timeout=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-10-20T23:22:46.673843" elapsed="0.000745"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:22:46.675961" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.170.223" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:22:46.675012" elapsed="0.001034"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:22:46.677633" level="INFO">${conn_id} = 16</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-20T23:22:46.676565" elapsed="0.001223"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-20T23:22:46.681052" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:22:46.681357" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-20T23:22:46.680508" elapsed="0.000911"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:22:46.682525" elapsed="0.000627"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:22:46.685189" level="INFO">Logging into '10.30.170.223:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:22:47.039328" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-194-generic x86_64)

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

 System information as of Tue Oct 20 23:22:35 UTC 2026

  System load:  0.02               Processes:             120
  Usage of /:   14.0% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.170.223
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Tue Oct 20 23:22:46 2026 from 10.30.170.114
[?2004h[jenkins@releng-34016-79-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-10-20T23:22:46.684943" elapsed="0.354482"/>
</kw>
<msg time="2026-10-20T23:22:47.039528" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:22:46.684296" elapsed="0.355319"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-10-20T23:22:46.678460" elapsed="0.361257"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:22:47.040414" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-10-20T23:22:47.053929" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-10-20T23:22:47.054239" level="INFO">${stdout} = </msg>
<msg time="2026-10-20T23:22:47.054600" 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-10-20T23:22:47.040033" elapsed="0.014698"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:22:47.055140" elapsed="0.000343"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:22:47.056807" 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-10-20T23:22:47.056161" 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-10-20T23:22:47.057225" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:22:47.057055" elapsed="0.000279"/>
</branch>
<status status="PASS" start="2026-10-20T23:22:47.057032" elapsed="0.000384"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-10-20T23:22:47.057632" elapsed="0.000041"/>
</return>
<status status="PASS" start="2026-10-20T23:22:47.057506" elapsed="0.000224"/>
</branch>
<status status="PASS" start="2026-10-20T23:22:47.057489" elapsed="0.000320"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:22:47.057879" 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-10-20T23:22:47.060880" elapsed="0.000120"/>
</kw>
<msg time="2026-10-20T23:22:47.061069" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:22:47.059899" elapsed="0.001305"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:47.062464" elapsed="0.000058"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:47.063521" elapsed="0.000055"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-10-20T23:22:47.058197" elapsed="0.005455"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-10-20T23:22:46.671341" elapsed="0.392493"/>
</kw>
<msg time="2026-10-20T23:22:47.063922" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:22:46.670461" elapsed="0.393509"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-10-20T23:22:46.669809" elapsed="0.394231"/>
</kw>
<msg time="2026-10-20T23:22:47.064077" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:22:46.669149" elapsed="0.394983"/>
</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-10-20T23:22:47.065452" elapsed="0.000114"/>
</kw>
<msg time="2026-10-20T23:22:47.065606" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:22:47.064881" elapsed="0.000780"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:47.065841" elapsed="0.000020"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:47.066012" elapsed="0.000019"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-10-20T23:22:47.064493" elapsed="0.001593"/>
</kw>
<msg time="2026-10-20T23:22:47.066192" 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-10-20T23:22:46.667717" elapsed="0.398498"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:22:47.066879" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:22:47.066646" elapsed="0.000272"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-20T23:22:47.066957" elapsed="0.000026"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-10-20T23:22:46.666562" elapsed="0.400494"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-10-20T23:22:46.666331" elapsed="0.400759"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-10-20T23:22:46.666153" elapsed="0.400984"/>
</for>
<arg>command=netstat -pnatu | grep 2550</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-10-20T23:22:46.663547" elapsed="0.403647"/>
</kw>
<return>
<value>${updated_index_list}</value>
<status status="PASS" start="2026-10-20T23:22:47.067231" elapsed="0.000023"/>
</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-10-20T23:22:35.276755" elapsed="11.790601"/>
</kw>
<msg time="2026-10-20T23:22:47.067443" level="INFO">${status} = PASS</msg>
<msg time="2026-10-20T23:22:47.067483" 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 errorw.</doc>
<status status="PASS" start="2026-10-20T23:22:35.275742" elapsed="11.791763"/>
</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-10-20T23:22:47.067938" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:22:47.067572" elapsed="0.000424"/>
</branch>
<status status="PASS" start="2026-10-20T23:22:47.067555" elapsed="0.000464"/>
</if>
<kw name="Start_Members_From_List_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:22:47.070489" level="INFO">${base_command} = /tmp/karaf-0.25.0/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-10-20T23:22:47.070135" elapsed="0.000380"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:22:47.070992" level="INFO">${command} = /tmp/karaf-0.25.0/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-10-20T23:22:47.070689" elapsed="0.000327"/>
</kw>
<kw name="Get Current Date" owner="DateTime">
<msg time="2026-10-20T23:22:47.071466" level="INFO">${epoch} = 1792538567.071395</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-10-20T23:22:47.071196" elapsed="0.000295"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:22:47.071991" level="INFO">${gc_filepath} = /tmp/karaf-0.25.0/data/log/gc_1792538567.071395.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-10-20T23:22:47.071662" elapsed="0.000353"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:22:47.072529" level="INFO">${gc_options} = -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.25.0/data/log/gc_1792538567.071395.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-10-20T23:22:47.072199" elapsed="0.000355"/>
</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-10-20T23:22:47.073923" 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-10-20T23:22:47.073593" elapsed="0.000387"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:22:47.074427" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:22:47.074146" elapsed="0.000305"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-20T23:22:47.074492" elapsed="0.000027"/>
</return>
<msg time="2026-10-20T23:22:47.074618" 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-10-20T23:22:47.073215" elapsed="0.001425"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-10-20T23:22:47.075786" level="INFO">${member_ip} = 10.30.170.223</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="PASS" start="2026-10-20T23:22:47.075567" elapsed="0.000244"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:22:47.076555" level="INFO">index=5
host=10.30.170.219
alias=None
port=22
timeout=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-10-20T23:22:47.076644" level="INFO">${current_connection} = index=5
host=10.30.170.219
alias=None
port=22
timeout=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-10-20T23:22:47.076449" elapsed="0.000219"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:47.079077" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:22:47.078819" elapsed="0.000355"/>
</branch>
<status status="PASS" start="2026-10-20T23:22:47.078801" elapsed="0.000398"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:22:47.079512" level="INFO">index=5
host=10.30.170.219
alias=None
port=22
timeout=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-10-20T23:22:47.079601" level="INFO">${current_ssh_connection} = index=5
host=10.30.170.219
alias=None
port=22
timeout=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-10-20T23:22:47.079412" elapsed="0.000214"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:22:47.080265" level="INFO">Attempting to execute command "/tmp/karaf-0.25.0/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.25.0/data/log/gc_1792538567.071395.log" on remote system "10.30.170.223" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:22:47.079816" elapsed="0.000513"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:22:47.080861" level="INFO">${conn_id} = 17</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-20T23:22:47.080508" elapsed="0.000377"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-20T23:22:47.082012" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:22:47.082126" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-20T23:22:47.081539" 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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:22:47.082542" elapsed="0.000677"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:22:47.085421" level="INFO">Logging into '10.30.170.223:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:22:47.454178" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-194-generic x86_64)

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

 System information as of Tue Oct 20 23:22:35 UTC 2026

  System load:  0.02               Processes:             120
  Usage of /:   14.0% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.170.223
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Tue Oct 20 23:22:46 2026 from 10.30.170.114
[?2004h[jenkins@releng-34016-79-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-10-20T23:22:47.085001" elapsed="0.369415"/>
</kw>
<msg time="2026-10-20T23:22:47.454510" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:22:47.083676" elapsed="0.370940"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-10-20T23:22:47.081077" elapsed="0.373923"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:22:47.455603" level="INFO">Executing command '/tmp/karaf-0.25.0/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.25.0/data/log/gc_1792538567.071395.log'.</msg>
<msg time="2026-10-20T23:22:47.478838" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:22:47.478983" level="INFO">${stdout} = </msg>
<msg time="2026-10-20T23:22:47.479037" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:22:47.455359" elapsed="0.023708"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:22:47.479301" elapsed="0.000312"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:22:47.480488" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:22:47.479967" elapsed="0.000577"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:22:47.480808" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:22:47.480650" elapsed="0.000225"/>
</branch>
<status status="PASS" start="2026-10-20T23:22:47.480617" elapsed="0.000289"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-10-20T23:22:47.481087" elapsed="0.000049"/>
</return>
<status status="PASS" start="2026-10-20T23:22:47.480976" elapsed="0.000204"/>
</branch>
<status status="PASS" start="2026-10-20T23:22:47.480956" elapsed="0.000255"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:22:47.481255" elapsed="0.000018"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-10-20T23:22:47.484692" elapsed="0.000644"/>
</kw>
<msg time="2026-10-20T23:22:47.485425" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:22:47.482452" elapsed="0.003081"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:47.485921" elapsed="0.000030"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:47.486260" 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-10-20T23:22:47.481715" elapsed="0.004769"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-10-20T23:22:47.078404" elapsed="0.408181"/>
</kw>
<msg time="2026-10-20T23:22:47.486652" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:22:47.077738" elapsed="0.408982"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-10-20T23:22:47.077287" elapsed="0.409532"/>
</kw>
<msg time="2026-10-20T23:22:47.486871" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:22:47.076819" elapsed="0.410109"/>
</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-10-20T23:22:47.488859" elapsed="0.000159"/>
</kw>
<msg time="2026-10-20T23:22:47.489071" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:22:47.487981" elapsed="0.001182"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:47.489464" elapsed="0.000029"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:47.489680" 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-10-20T23:22:47.487431" elapsed="0.002527"/>
</kw>
<msg time="2026-10-20T23:22:47.490085" 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-10-20T23:22:47.076011" elapsed="0.414122"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:22:47.490791" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:22:47.490475" elapsed="0.000482"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-20T23:22:47.491011" 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-10-20T23:22:47.074963" elapsed="0.416209"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-10-20T23:22:47.074804" elapsed="0.416416"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-10-20T23:22:47.074694" elapsed="0.416571"/>
</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-10-20T23:22:47.072742" elapsed="0.418617"/>
</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-10-20T23:22:47.497036" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:22:47.496648" elapsed="0.000479"/>
</branch>
<status status="PASS" start="2026-10-20T23:22:47.496623" elapsed="0.000539"/>
</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-10-20T23:22:47.499060" 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-10-20T23:22:47.498586" elapsed="0.000509"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:22:47.499714" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:22:47.499344" elapsed="0.000404"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-20T23:22:47.499805" elapsed="0.000292"/>
</return>
<msg time="2026-10-20T23:22:47.500267" 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-10-20T23:22:47.498033" elapsed="0.002266"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:22:47.501638" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:22:47.501240" elapsed="0.000432"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-20T23:22:47.501730" elapsed="0.000037"/>
</return>
<msg time="2026-10-20T23:22:47.501899" 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-10-20T23:22:47.500772" elapsed="0.001157"/>
</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-10-20T23:22:47.520978" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:22:47.520385" elapsed="0.000698"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:22:47.523248" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:22:47.522989" elapsed="0.000537">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</status>
</kw>
<msg time="2026-10-20T23:22:47.523729" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:22:47.522206" elapsed="0.001622"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:22:47.525572" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:22:47.524914" elapsed="0.000760"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-20T23:22:47.527079" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-10-20T23:22:47.527407" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-10-20T23:22:47.526752" elapsed="0.000758"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:22:47.529168" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:22:47.528760" elapsed="0.000528"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:22:47.530610" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:22:47.530369" elapsed="0.000281"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:22:47.531247" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:22:47.530828" elapsed="0.000444"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:47.531674" elapsed="0.000020"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:47.531860" elapsed="0.000023"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given `key_value_pairs` and/or `items` to the `dictionary`.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:47.532060" elapsed="0.000020"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-10-20T23:22:47.531543" elapsed="0.000586"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-10-20T23:22:47.531412" elapsed="0.000777"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-20T23:22:47.532233" elapsed="0.000027"/>
</return>
<msg time="2026-10-20T23:22:47.532408" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-20T23:22:47.529907" elapsed="0.002551"/>
</kw>
<status status="PASS" start="2026-10-20T23:22:47.529473" elapsed="0.003025"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:47.532845" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:22:47.532558" elapsed="0.000362"/>
</branch>
<status status="PASS" start="2026-10-20T23:22:47.529399" elapsed="0.003577"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:22:47.534827" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-10-20T23:22:47.534089" elapsed="0.000841"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:22:47.535012" elapsed="0.000052"/>
</return>
<arg>folder=${folder}</arg>
<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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-10-20T23:22:47.518079" elapsed="0.017183"/>
</kw>
<msg time="2026-10-20T23:22:47.535568" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:22:47.513487" elapsed="0.022132"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:47.539784" elapsed="0.000026"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:47.543817" elapsed="0.000025"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:47.547858" elapsed="0.000025"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:47.548036" elapsed="0.000020"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:47.548230" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:47.548650" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:22:47.548503" elapsed="0.000306"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:22:47.548488" elapsed="0.000345"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:47.548989" elapsed="0.000019"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:47.549179" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:47.549363" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-20T23:22:47.548460" elapsed="0.000953"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-20T23:22:47.548298" elapsed="0.001139"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Concatenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:47.549589" elapsed="0.000019"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-20T23:22:47.549656" elapsed="0.000015"/>
</return>
<msg time="2026-10-20T23:22:47.549804" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-10-20T23:22:47.512862" elapsed="0.036966"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:22:47.551165" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:22:47.550792" elapsed="0.000548">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-10-20T23:22:47.551572" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:22:47.550468" elapsed="0.001128"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:47.551885" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:22:47.551662" elapsed="0.000276"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:22:47.552654" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:22:47.552165" elapsed="0.000514"/>
</kw>
<status status="PASS" start="2026-10-20T23:22:47.551960" elapsed="0.000752"/>
</branch>
<status status="PASS" start="2026-10-20T23:22:47.551645" elapsed="0.001086"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:22:47.553243" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:22:47.552890" elapsed="0.000377"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-20T23:22:47.553334" elapsed="0.000028"/>
</return>
<msg time="2026-10-20T23:22:47.553460" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:22:47.550148" elapsed="0.003335"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:22:47.554762" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:22:47.554401" elapsed="0.000517">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-10-20T23:22:47.555161" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:22:47.554031" elapsed="0.001155"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-10-20T23:22:47.555378" elapsed="0.000024"/>
</return>
<status status="PASS" start="2026-10-20T23:22:47.555251" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-10-20T23:22:47.555234" elapsed="0.000221"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:47.555611" elapsed="0.000020"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the `string` using `separator` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:47.555784" elapsed="0.000019"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-10-20T23:22:47.555843" elapsed="0.000014"/>
</return>
<msg time="2026-10-20T23:22:47.555967" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:22:47.553730" elapsed="0.002260"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:22:47.557476" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:22:47.557224" elapsed="0.000295"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:22:47.557925" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:22:47.557707" elapsed="0.000258"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:22:47.561621" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.170.223', port=8181): Max retries exceeded with url: /rests/data/ietf-yang-library:modules-state?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.170.223', 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-10-20T23:22:47.558265" elapsed="0.008548">ConnectionError: HTTPConnectionPool(host='10.30.170.223', port=8181): Max retries exceeded with url: /rests/data/ietf-yang-library:modules-state?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.170.223', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-10-20T23:22:47.558025" elapsed="0.008898">ConnectionError: HTTPConnectionPool(host='10.30.170.223', port=8181): Max retries exceeded with url: /rests/data/ietf-yang-library:modules-state?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.170.223', 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-10-20T23:22:47.567110" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:22:47.566957" elapsed="0.000227"/>
</branch>
<status status="FAIL" start="2026-10-20T23:22:47.558008" elapsed="0.009198">ConnectionError: HTTPConnectionPool(host='10.30.170.223', port=8181): Max retries exceeded with url: /rests/data/ietf-yang-library:modules-state?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.170.223', 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-10-20T23:22:47.567737" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-20T23:22:47.567860" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:22:47.567827" elapsed="0.000072"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:22:47.567811" elapsed="0.000108"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:47.568058" elapsed="0.000020"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-20T23:22:47.568135" 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-10-20T23:22:47.556516" elapsed="0.011720">ConnectionError: HTTPConnectionPool(host='10.30.170.223', port=8181): Max retries exceeded with url: /rests/data/ietf-yang-library:modules-state?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.170.223', 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-10-20T23:22:47.568326" elapsed="0.000016"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-10-20T23:22:47.504675" elapsed="0.063743">ConnectionError: HTTPConnectionPool(host='10.30.170.223', port=8181): Max retries exceeded with url: /rests/data/ietf-yang-library:modules-state?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.170.223', 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-10-20T23:22:47.568663" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:22:47.568502" elapsed="0.000226"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:22:47.568486" elapsed="0.000265"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:22:47.568782" 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-10-20T23:22:47.503806" elapsed="0.065066">ConnectionError: HTTPConnectionPool(host='10.30.170.223', port=8181): Max retries exceeded with url: /rests/data/ietf-yang-library:modules-state?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.170.223', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-10-20T23:22:47.500560" elapsed="0.068372">ConnectionError: HTTPConnectionPool(host='10.30.170.223', port=8181): Max retries exceeded with url: /rests/data/ietf-yang-library:modules-state?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.170.223', 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-10-20T23:22:47.500395" elapsed="0.068591">ConnectionError: HTTPConnectionPool(host='10.30.170.223', port=8181): Max retries exceeded with url: /rests/data/ietf-yang-library:modules-state?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.170.223', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<arg>${member_index_list}</arg>
<status status="FAIL" start="2026-10-20T23:22:47.497560" elapsed="0.071511">ConnectionError: HTTPConnectionPool(host='10.30.170.223', port=8181): Max retries exceeded with url: /rests/data/ietf-yang-library:modules-state?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.170.223', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-10-20T23:22:47.497240" elapsed="0.071894">ConnectionError: HTTPConnectionPool(host='10.30.170.223', port=8181): Max retries exceeded with url: /rests/data/ietf-yang-library:modules-state?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.170.223', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<status status="FAIL" start="2026-10-20T23:22:47.497212" elapsed="0.071952">ConnectionError: HTTPConnectionPool(host='10.30.170.223', port=8181): Max retries exceeded with url: /rests/data/ietf-yang-library:modules-state?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.170.223', 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-10-20T23:22:47.569480" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:22:47.569256" elapsed="0.000277"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:22:47.569240" elapsed="0.000316"/>
</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-10-20T23:22:47.496185" elapsed="0.073444">ConnectionError: HTTPConnectionPool(host='10.30.170.223', port=8181): Max retries exceeded with url: /rests/data/ietf-yang-library:modules-state?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.170.223', 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-10-20T23:22:57.578248" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:22:57.577608" elapsed="0.000816"/>
</branch>
<status status="PASS" start="2026-10-20T23:22:57.577561" elapsed="0.000941"/>
</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-10-20T23:22:57.581810" 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-10-20T23:22:57.580843" elapsed="0.001027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:22:57.582882" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:22:57.582214" elapsed="0.000726"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-20T23:22:57.583037" elapsed="0.000070"/>
</return>
<msg time="2026-10-20T23:22:57.583373" 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-10-20T23:22:57.579918" elapsed="0.003510"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:22:57.589073" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:22:57.588407" elapsed="0.000725"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-20T23:22:57.589229" elapsed="0.000060"/>
</return>
<msg time="2026-10-20T23:22:57.589566" 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-10-20T23:22:57.587608" elapsed="0.002011"/>
</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-10-20T23:22:57.625143" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:22:57.624258" elapsed="0.001034"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:22:57.628047" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:22:57.627721" elapsed="0.000424">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</status>
</kw>
<msg time="2026-10-20T23:22:57.628541" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:22:57.626990" elapsed="0.001691"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:22:57.631104" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:22:57.630153" elapsed="0.001092"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-20T23:22:57.633252" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-10-20T23:22:57.633662" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-10-20T23:22:57.632829" elapsed="0.000973"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:22:57.635969" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:22:57.635410" elapsed="0.000723"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:22:57.638060" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:22:57.637724" elapsed="0.000395"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:22:57.638951" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:22:57.638586" elapsed="0.000398"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:57.639424" elapsed="0.000043"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:57.639700" elapsed="0.000032"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given `key_value_pairs` and/or `items` to the `dictionary`.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:57.639960" elapsed="0.000027"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-10-20T23:22:57.639220" elapsed="0.000812"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-10-20T23:22:57.639053" elapsed="0.001021"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-20T23:22:57.640134" elapsed="0.000041"/>
</return>
<msg time="2026-10-20T23:22:57.640408" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-20T23:22:57.637138" elapsed="0.003355"/>
</kw>
<status status="PASS" start="2026-10-20T23:22:57.636526" elapsed="0.004024"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:57.641022" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:22:57.640633" elapsed="0.000491"/>
</branch>
<status status="PASS" start="2026-10-20T23:22:57.636278" elapsed="0.004922"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:22:57.643989" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-10-20T23:22:57.642712" elapsed="0.001420"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:22:57.644247" elapsed="0.000103"/>
</return>
<arg>folder=${folder}</arg>
<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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-10-20T23:22:57.621098" elapsed="0.023533"/>
</kw>
<msg time="2026-10-20T23:22:57.645021" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:22:57.611633" elapsed="0.033462"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:57.649571" elapsed="0.000025"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:57.653618" elapsed="0.000025"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:57.657660" elapsed="0.000025"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:57.657841" elapsed="0.000020"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:57.658022" elapsed="0.000019"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:57.658443" elapsed="0.000063"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:22:57.658269" elapsed="0.000347"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:22:57.658254" elapsed="0.000387"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:57.658798" elapsed="0.000019"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:57.659015" 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-10-20T23:22:57.659180" elapsed="0.000019"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-20T23:22:57.658224" elapsed="0.001005"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-20T23:22:57.658090" 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>Concatenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:57.659421" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-20T23:22:57.659503" elapsed="0.000015"/>
</return>
<msg time="2026-10-20T23:22:57.659613" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-10-20T23:22:57.610156" elapsed="0.049481"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:22:57.661844" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:22:57.661477" elapsed="0.000529">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-10-20T23:22:57.662246" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:22:57.660272" elapsed="0.001999"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:57.662604" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:22:57.662361" elapsed="0.000296"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:22:57.663382" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:22:57.662876" elapsed="0.000537"/>
</kw>
<status status="PASS" start="2026-10-20T23:22:57.662681" elapsed="0.001820"/>
</branch>
<status status="PASS" start="2026-10-20T23:22:57.662342" elapsed="0.002202"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:22:57.665121" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:22:57.664737" elapsed="0.000419"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-20T23:22:57.665207" elapsed="0.000030"/>
</return>
<msg time="2026-10-20T23:22:57.665411" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:22:57.659944" elapsed="0.005499"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:22:57.666776" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:22:57.666419" elapsed="0.000507">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-10-20T23:22:57.667152" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:22:57.666071" elapsed="0.001105"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-10-20T23:22:57.667364" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-10-20T23:22:57.667241" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-10-20T23:22:57.667224" elapsed="0.000218"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:57.667662" elapsed="0.000020"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the `string` using `separator` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:57.667837" elapsed="0.000019"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-10-20T23:22:57.667896" elapsed="0.000014"/>
</return>
<msg time="2026-10-20T23:22:57.668021" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:22:57.665763" elapsed="0.002281"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:22:57.669358" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:22:57.669107" elapsed="0.000330"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:22:57.669866" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:22:57.669644" elapsed="0.000262"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:22:57.790145" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:22:57.790252" level="INFO">GET Response : url=http://10.30.170.223: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-10-20T23:22:57.790507" level="FAIL">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:22:57.670411" elapsed="0.120496">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:22:57.670122" elapsed="0.120866">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:57.791185" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:22:57.791021" elapsed="0.000224"/>
</branch>
<status status="FAIL" start="2026-10-20T23:22:57.669949" elapsed="0.121318">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:57.791823" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-20T23:22:57.791950" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:22:57.791915" elapsed="0.000075"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:22:57.791898" elapsed="0.000130"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:57.792171" elapsed="0.000020"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-20T23:22:57.792233" elapsed="0.000014"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-10-20T23:22:57.668375" elapsed="0.123982">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:22:57.792425" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-10-20T23:22:57.594147" elapsed="0.198386">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-10-20T23:22:57.792778" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:22:57.792618" elapsed="0.000226"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:22:57.792601" elapsed="0.000265"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:22:57.792896" 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-10-20T23:22:57.592746" elapsed="0.200241">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-10-20T23:22:57.587184" elapsed="0.205863">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-10-20T23:22:57.583568" elapsed="0.209532">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</for>
<arg>${member_index_list}</arg>
<status status="FAIL" start="2026-10-20T23:22:57.579105" elapsed="0.214125">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:22:57.578619" elapsed="0.214662">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<status status="FAIL" start="2026-10-20T23:22:57.578586" elapsed="0.214753">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.223: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-10-20T23:22:57.793620" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:22:57.793404" elapsed="0.000269"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:22:57.793388" elapsed="0.000306"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-10-20T23:22:57.576704" elapsed="0.217064">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.170.223: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-10-20T23:23:07.802382" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:23:07.801672" elapsed="0.000861"/>
</branch>
<status status="PASS" start="2026-10-20T23:23:07.801626" elapsed="0.000962"/>
</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-10-20T23:23:07.805879" 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-10-20T23:23:07.804949" elapsed="0.000992"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:23:07.807195" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:23:07.806287" elapsed="0.000971"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-20T23:23:07.807392" elapsed="0.000074"/>
</return>
<msg time="2026-10-20T23:23:07.807704" 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-10-20T23:23:07.804043" elapsed="0.003714"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:23:07.809967" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:23:07.809335" elapsed="0.000688"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-20T23:23:07.810117" elapsed="0.000060"/>
</return>
<msg time="2026-10-20T23:23:07.810425" 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-10-20T23:23:07.808549" elapsed="0.001929"/>
</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-10-20T23:23:07.849282" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:23:07.848435" elapsed="0.001067"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:23:07.852269" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:23:07.851968" elapsed="0.000447">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</status>
</kw>
<msg time="2026-10-20T23:23:07.852702" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:23:07.851036" elapsed="0.001834"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:23:07.855624" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:23:07.854619" elapsed="0.001149"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-20T23:23:07.857837" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-10-20T23:23:07.858221" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-10-20T23:23:07.857256" elapsed="0.001141"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:23:07.860729" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:23:07.860041" elapsed="0.000875"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:23:07.862862" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:23:07.862500" elapsed="0.000421"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:23:07.863655" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:23:07.863172" elapsed="0.000519"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:07.864118" elapsed="0.000030"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:07.864430" elapsed="0.000034"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given `key_value_pairs` and/or `items` to the `dictionary`.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:07.864698" elapsed="0.000034"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-10-20T23:23:07.863933" elapsed="0.000847"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-10-20T23:23:07.863754" elapsed="0.001084"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-20T23:23:07.864897" elapsed="0.000041"/>
</return>
<msg time="2026-10-20T23:23:07.865122" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-20T23:23:07.861913" elapsed="0.003278"/>
</kw>
<status status="PASS" start="2026-10-20T23:23:07.861157" elapsed="0.004089"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:07.865807" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:23:07.865388" elapsed="0.000532"/>
</branch>
<status status="PASS" start="2026-10-20T23:23:07.861055" elapsed="0.004942"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:23:07.868608" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-10-20T23:23:07.867533" elapsed="0.001216"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:23:07.868884" elapsed="0.000074"/>
</return>
<arg>folder=${folder}</arg>
<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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-10-20T23:23:07.844490" elapsed="0.024721"/>
</kw>
<msg time="2026-10-20T23:23:07.869647" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:23:07.833573" elapsed="0.036154"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:07.874956" elapsed="0.000026"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:07.879070" 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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:07.883209" elapsed="0.000026"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:07.883424" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:07.883613" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:07.884064" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:23:07.883880" elapsed="0.000346"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:23:07.883866" elapsed="0.000388"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:07.884450" 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-10-20T23:23:07.884639" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:07.884818" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-20T23:23:07.883835" elapsed="0.001036"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-20T23:23:07.883683" elapsed="0.001212"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Concatenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:07.885049" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-20T23:23:07.885119" elapsed="0.000015"/>
</return>
<msg time="2026-10-20T23:23:07.885233" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-10-20T23:23:07.832151" elapsed="0.053106"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:23:07.886626" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:23:07.886246" elapsed="0.000536">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-10-20T23:23:07.887027" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:23:07.885912" elapsed="0.001139"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:07.887389" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:23:07.887118" elapsed="0.000328"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:23:07.888164" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:23:07.887675" elapsed="0.000516"/>
</kw>
<status status="PASS" start="2026-10-20T23:23:07.887470" elapsed="0.000755"/>
</branch>
<status status="PASS" start="2026-10-20T23:23:07.887101" elapsed="0.001144"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:23:07.888806" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:23:07.888442" elapsed="0.000389"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-20T23:23:07.888878" elapsed="0.000029"/>
</return>
<msg time="2026-10-20T23:23:07.889006" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:23:07.885593" elapsed="0.003436"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:23:07.890326" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:23:07.889955" elapsed="0.000536">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-10-20T23:23:07.890723" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:23:07.889618" elapsed="0.001130"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-10-20T23:23:07.890943" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-10-20T23:23:07.890840" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-10-20T23:23:07.890822" elapsed="0.000200"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:07.891180" elapsed="0.000021"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the `string` using `separator` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:07.891437" elapsed="0.000022"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-10-20T23:23:07.891503" elapsed="0.000014"/>
</return>
<msg time="2026-10-20T23:23:07.891629" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:23:07.889286" elapsed="0.002399"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:23:07.893008" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:23:07.892768" elapsed="0.000284"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:23:07.893517" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:23:07.893242" 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-10-20T23:23:08.636669" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:23:08.636988" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '405'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/ietf-yang-library:modules-state&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:23:08.637622" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:23:07.893864" elapsed="0.744769">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:23:07.893621" elapsed="0.745247">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:08.639490" elapsed="0.000060"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:23:08.638956" elapsed="0.000695"/>
</branch>
<status status="FAIL" start="2026-10-20T23:23:07.893604" elapsed="0.746102">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:08.641139" elapsed="0.000066"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-20T23:23:08.641544" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:23:08.641455" elapsed="0.000195"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:23:08.641405" elapsed="0.000298"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:08.642078" elapsed="0.000051"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-20T23:23:08.642239" elapsed="0.000036"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-10-20T23:23:07.892025" elapsed="0.750530">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:23:08.642728" elapsed="0.000037"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-10-20T23:23:07.815493" elapsed="0.827525">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:08.643688" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:23:08.643233" elapsed="0.000645"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:23:08.643193" elapsed="0.000740"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:23:08.644005" 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="FAIL" start="2026-10-20T23:23:07.814020" elapsed="0.830207">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-10-20T23:23:07.808172" elapsed="0.836359">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-10-20T23:23:07.807897" elapsed="0.836777">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</for>
<arg>${member_index_list}</arg>
<status status="FAIL" start="2026-10-20T23:23:07.803232" elapsed="0.841686">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:23:07.802705" elapsed="0.842337">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<status status="FAIL" start="2026-10-20T23:23:07.802672" elapsed="0.842454">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:23:08.645869" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:23:08.645279" elapsed="0.000720"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:23:08.645242" elapsed="0.000812"/>
</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-10-20T23:23:07.800773" elapsed="0.845458">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:23:18.656101" elapsed="0.000072"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:23:18.655403" elapsed="0.000896"/>
</branch>
<status status="PASS" start="2026-10-20T23:23:18.655289" elapsed="0.001099"/>
</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-10-20T23:23:18.659650" 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-10-20T23:23:18.658732" elapsed="0.000978"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:23:18.660720" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:23:18.660056" elapsed="0.000718"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-20T23:23:18.660871" elapsed="0.000103"/>
</return>
<msg time="2026-10-20T23:23:18.661231" 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-10-20T23:23:18.657810" elapsed="0.003473"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:23:18.663462" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:23:18.662812" elapsed="0.000707"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-20T23:23:18.663610" elapsed="0.000059"/>
</return>
<msg time="2026-10-20T23:23:18.663879" 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-10-20T23:23:18.662032" elapsed="0.001910"/>
</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-10-20T23:23:18.699063" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:23:18.698192" elapsed="0.001038"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:23:18.702029" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:23:18.701726" elapsed="0.000407">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</status>
</kw>
<msg time="2026-10-20T23:23:18.702475" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:23:18.700936" elapsed="0.001682"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:23:18.705194" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:23:18.704268" elapsed="0.001170"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-20T23:23:18.707472" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-10-20T23:23:18.707934" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-10-20T23:23:18.706906" elapsed="0.001171"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:23:18.710380" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:23:18.709759" elapsed="0.000794"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:23:18.712496" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:23:18.712098" elapsed="0.000457"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:23:18.713178" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:23:18.712800" elapsed="0.000414"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:18.713728" elapsed="0.000029"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:18.713991" elapsed="0.000031"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given `key_value_pairs` and/or `items` to the `dictionary`.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:18.714276" elapsed="0.000050"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-10-20T23:23:18.713541" elapsed="0.000849"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-10-20T23:23:18.713278" elapsed="0.001154"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-20T23:23:18.714490" elapsed="0.000040"/>
</return>
<msg time="2026-10-20T23:23:18.714711" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-20T23:23:18.711541" elapsed="0.003244"/>
</kw>
<status status="PASS" start="2026-10-20T23:23:18.710789" elapsed="0.004051"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:18.715382" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:23:18.714922" elapsed="0.000580"/>
</branch>
<status status="PASS" start="2026-10-20T23:23:18.710686" elapsed="0.004893"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:23:18.717993" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-10-20T23:23:18.717244" elapsed="0.000853"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:23:18.718494" elapsed="0.000097"/>
</return>
<arg>folder=${folder}</arg>
<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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-10-20T23:23:18.694968" elapsed="0.023846"/>
</kw>
<msg time="2026-10-20T23:23:18.719110" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:23:18.686638" elapsed="0.032543"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:18.723583" 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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:18.727668" 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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:18.731730" elapsed="0.000026"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:18.731917" elapsed="0.000020"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:18.732096" elapsed="0.000077"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:18.732597" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:23:18.732446" elapsed="0.000310"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:23:18.732432" elapsed="0.000349"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:18.732941" elapsed="0.000019"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:18.733121" elapsed="0.000018"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:18.733319" elapsed="0.000031"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-20T23:23:18.732402" elapsed="0.000981"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-20T23:23:18.732228" elapsed="0.001179"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Concatenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:18.733564" elapsed="0.000019"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-20T23:23:18.733633" elapsed="0.000015"/>
</return>
<msg time="2026-10-20T23:23:18.733739" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-10-20T23:23:18.685204" elapsed="0.048558"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:23:18.735108" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:23:18.734761" elapsed="0.000517">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-10-20T23:23:18.735537" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:23:18.734419" elapsed="0.001142"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:18.735854" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:23:18.735626" elapsed="0.000279"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:23:18.736648" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:23:18.736129" elapsed="0.000544"/>
</kw>
<status status="PASS" start="2026-10-20T23:23:18.735928" elapsed="0.000777"/>
</branch>
<status status="PASS" start="2026-10-20T23:23:18.735608" elapsed="0.001117"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:23:18.737246" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:23:18.736887" elapsed="0.000384"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-20T23:23:18.737350" elapsed="0.000029"/>
</return>
<msg time="2026-10-20T23:23:18.737480" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:23:18.734069" elapsed="0.003435"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:23:18.738774" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:23:18.738427" elapsed="0.000500">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-10-20T23:23:18.739168" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:23:18.738057" elapsed="0.001137"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-10-20T23:23:18.739431" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-10-20T23:23:18.739258" elapsed="0.000236"/>
</branch>
<status status="PASS" start="2026-10-20T23:23:18.739241" elapsed="0.000276"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:18.739673" elapsed="0.000020"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the `string` using `separator` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:18.739845" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-10-20T23:23:18.739937" elapsed="0.000016"/>
</return>
<msg time="2026-10-20T23:23:18.740067" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:23:18.737752" elapsed="0.002338"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:23:18.741444" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:23:18.741175" elapsed="0.000313"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:23:18.741902" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:23:18.741678" elapsed="0.000266"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:23:18.748246" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:23:18.748382" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '405'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/ietf-yang-library:modules-state&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:23:18.748576" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:23:18.742247" elapsed="0.006709">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:23:18.742004" elapsed="0.007030">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:18.749232" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:23:18.749063" elapsed="0.000230"/>
</branch>
<status status="FAIL" start="2026-10-20T23:23:18.741987" elapsed="0.007371">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:18.749866" elapsed="0.000029"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-20T23:23:18.749994" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:23:18.749961" elapsed="0.000072"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:23:18.749945" elapsed="0.000109"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:18.750206" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-20T23:23:18.750271" 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-10-20T23:23:18.740458" elapsed="0.009943">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:23:18.750471" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-10-20T23:23:18.668891" elapsed="0.081670">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:18.750809" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:23:18.750648" elapsed="0.000229"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:23:18.750627" elapsed="0.000274"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:23:18.750931" 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-10-20T23:23:18.667480" elapsed="0.083541">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-10-20T23:23:18.661699" elapsed="0.089415">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-10-20T23:23:18.661430" elapsed="0.089751">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</for>
<arg>${member_index_list}</arg>
<status status="FAIL" start="2026-10-20T23:23:18.656980" elapsed="0.094287">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:23:18.656503" elapsed="0.094846">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<status status="FAIL" start="2026-10-20T23:23:18.656471" elapsed="0.094911">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:23:18.751645" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:23:18.751445" elapsed="0.000253"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:23:18.751429" elapsed="0.000291"/>
</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-10-20T23:23:18.654394" elapsed="0.097399">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:23:28.761152" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:23:28.760516" elapsed="0.000824"/>
</branch>
<status status="PASS" start="2026-10-20T23:23:28.760447" elapsed="0.000953"/>
</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-10-20T23:23:28.764792" 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-10-20T23:23:28.763813" elapsed="0.001040"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:23:28.765876" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:23:28.765197" elapsed="0.000785"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-20T23:23:28.766080" elapsed="0.000069"/>
</return>
<msg time="2026-10-20T23:23:28.766413" 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-10-20T23:23:28.762848" elapsed="0.003618"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:23:28.768721" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:23:28.768049" elapsed="0.000728"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-20T23:23:28.768870" elapsed="0.000057"/>
</return>
<msg time="2026-10-20T23:23:28.769137" 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-10-20T23:23:28.767224" elapsed="0.001965"/>
</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-10-20T23:23:28.806937" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:23:28.806070" elapsed="0.001011"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:23:28.809862" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:23:28.809300" elapsed="0.000656">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</status>
</kw>
<msg time="2026-10-20T23:23:28.810230" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:23:28.808617" elapsed="0.001779"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:23:28.812840" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:23:28.811929" elapsed="0.001051"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-20T23:23:28.815419" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-10-20T23:23:28.815815" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-10-20T23:23:28.814826" elapsed="0.001131"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:23:28.818147" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:23:28.817573" elapsed="0.000826"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:23:28.820217" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:23:28.819881" elapsed="0.000395"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:23:28.821044" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:23:28.820682" elapsed="0.000397"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:28.821524" elapsed="0.000030"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:28.821794" elapsed="0.000040"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given `key_value_pairs` and/or `items` to the `dictionary`.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:28.822061" elapsed="0.000028"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-10-20T23:23:28.821303" elapsed="0.000832"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-10-20T23:23:28.821143" elapsed="0.001032"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-20T23:23:28.822231" elapsed="0.000040"/>
</return>
<msg time="2026-10-20T23:23:28.822544" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-20T23:23:28.819278" elapsed="0.003339"/>
</kw>
<status status="PASS" start="2026-10-20T23:23:28.818665" elapsed="0.004008"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:28.823147" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:23:28.822758" elapsed="0.000494"/>
</branch>
<status status="PASS" start="2026-10-20T23:23:28.818562" elapsed="0.004798"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:23:28.825885" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-10-20T23:23:28.824862" elapsed="0.001165"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:23:28.826139" elapsed="0.000072"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-10-20T23:23:28.802340" elapsed="0.024166"/>
</kw>
<msg time="2026-10-20T23:23:28.826896" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:23:28.791842" elapsed="0.035128"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:28.832164" elapsed="0.000026"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:28.836218" elapsed="0.000024"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:28.840273" elapsed="0.000025"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:28.840527" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:28.840710" elapsed="0.000018"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:28.841132" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:23:28.840975" elapsed="0.000311"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:23:28.840958" elapsed="0.000377"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:28.841506" 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-10-20T23:23:28.841693" elapsed="0.000018"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:28.841855" elapsed="0.000018"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-20T23:23:28.840924" elapsed="0.000978"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-20T23:23:28.840777" elapsed="0.001150"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Concatenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:28.842077" elapsed="0.000019"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-20T23:23:28.842145" elapsed="0.000014"/>
</return>
<msg time="2026-10-20T23:23:28.842253" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-10-20T23:23:28.790433" elapsed="0.051843"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:23:28.843663" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:23:28.843249" elapsed="0.000587">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-10-20T23:23:28.844063" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:23:28.842923" elapsed="0.001165"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:28.844399" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:23:28.844152" elapsed="0.000300"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:23:28.845207" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:23:28.844744" elapsed="0.000488"/>
</kw>
<status status="PASS" start="2026-10-20T23:23:28.844475" elapsed="0.000788"/>
</branch>
<status status="PASS" start="2026-10-20T23:23:28.844135" elapsed="0.001148"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:23:28.845835" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:23:28.845473" elapsed="0.000386"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-20T23:23:28.845903" elapsed="0.000026"/>
</return>
<msg time="2026-10-20T23:23:28.846030" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:23:28.842615" elapsed="0.003438"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:23:28.847326" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:23:28.846962" elapsed="0.000517">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-10-20T23:23:28.847721" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:23:28.846642" elapsed="0.001103"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-10-20T23:23:28.847917" elapsed="0.000024"/>
</return>
<status status="PASS" start="2026-10-20T23:23:28.847811" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-10-20T23:23:28.847794" elapsed="0.000201"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:28.848154" elapsed="0.000051"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the `string` using `separator` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:28.848434" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-10-20T23:23:28.848510" elapsed="0.000015"/>
</return>
<msg time="2026-10-20T23:23:28.848637" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:23:28.846325" elapsed="0.002341"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:23:28.849954" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:23:28.849725" elapsed="0.000272"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:23:28.850427" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:23:28.850184" 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-10-20T23:23:28.856505" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:23:28.856609" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '405'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/ietf-yang-library:modules-state&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:23:28.856796" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:23:28.850774" elapsed="0.006415">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:23:28.850541" elapsed="0.006725">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:28.857481" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:23:28.857296" elapsed="0.000262"/>
</branch>
<status status="FAIL" start="2026-10-20T23:23:28.850523" elapsed="0.007059">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:28.858083" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-20T23:23:28.858207" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:23:28.858173" elapsed="0.000072"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:23:28.858157" elapsed="0.000109"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:28.858427" elapsed="0.000020"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-20T23:23:28.858505" 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-10-20T23:23:28.848981" elapsed="0.009635">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:23:28.858696" elapsed="0.000014"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-10-20T23:23:28.774356" elapsed="0.084426">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:28.859021" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:23:28.858864" elapsed="0.000221"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:23:28.858848" elapsed="0.000259"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:23:28.859167" elapsed="0.000016"/>
</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-10-20T23:23:28.772911" elapsed="0.086350">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-10-20T23:23:28.766887" elapsed="0.092473">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-10-20T23:23:28.766609" elapsed="0.092805">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</for>
<arg>${member_index_list}</arg>
<status status="FAIL" start="2026-10-20T23:23:28.762017" elapsed="0.097494">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:23:28.761539" elapsed="0.098023">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<status status="FAIL" start="2026-10-20T23:23:28.761483" elapsed="0.098109">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:23:28.859860" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:23:28.859656" elapsed="0.000257"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:23:28.859641" elapsed="0.000294"/>
</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-10-20T23:23:28.759611" elapsed="0.100396">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:23:38.868468" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:23:38.867785" elapsed="0.000824"/>
</branch>
<status status="PASS" start="2026-10-20T23:23:38.867740" elapsed="0.000925"/>
</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-10-20T23:23:38.871907" 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-10-20T23:23:38.870998" elapsed="0.000969"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:23:38.872999" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:23:38.872347" elapsed="0.000708"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-20T23:23:38.873151" elapsed="0.000070"/>
</return>
<msg time="2026-10-20T23:23:38.873485" 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-10-20T23:23:38.870105" elapsed="0.003433"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:23:38.875678" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:23:38.875046" elapsed="0.000688"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-20T23:23:38.875844" elapsed="0.000060"/>
</return>
<msg time="2026-10-20T23:23:38.876119" 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-10-20T23:23:38.874270" elapsed="0.001899"/>
</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-10-20T23:23:38.912937" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:23:38.912069" elapsed="0.001015"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:23:38.915784" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:23:38.915494" elapsed="0.000404">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</status>
</kw>
<msg time="2026-10-20T23:23:38.916180" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:23:38.914770" elapsed="0.001647"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:23:38.918927" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:23:38.917901" elapsed="0.001168"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-20T23:23:38.921081" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-10-20T23:23:38.921468" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-10-20T23:23:38.920639" elapsed="0.000968"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:23:38.923751" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:23:38.923139" elapsed="0.000794"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:23:38.925941" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:23:38.925587" elapsed="0.000412"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:23:38.926622" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:23:38.926245" elapsed="0.000410"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:38.927080" elapsed="0.000030"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:38.927375" elapsed="0.000032"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given `key_value_pairs` and/or `items` to the `dictionary`.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:38.927633" elapsed="0.000027"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-10-20T23:23:38.926899" elapsed="0.000806"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-10-20T23:23:38.926721" elapsed="0.001024"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-20T23:23:38.927803" elapsed="0.000057"/>
</return>
<msg time="2026-10-20T23:23:38.928043" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-20T23:23:38.924858" elapsed="0.003254"/>
</kw>
<status status="PASS" start="2026-10-20T23:23:38.924175" elapsed="0.003990"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:38.928675" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:23:38.928248" elapsed="0.000533"/>
</branch>
<status status="PASS" start="2026-10-20T23:23:38.924071" elapsed="0.004807"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:23:38.930960" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-10-20T23:23:38.930225" elapsed="0.000838"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:23:38.931146" elapsed="0.000052"/>
</return>
<arg>folder=${folder}</arg>
<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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-10-20T23:23:38.908687" elapsed="0.022718"/>
</kw>
<msg time="2026-10-20T23:23:38.931684" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:23:38.901382" elapsed="0.030353"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:38.981210" 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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:38.985529" 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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:38.989756" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:38.990039" 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-10-20T23:23:38.990233" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:38.990686" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:23:38.990533" elapsed="0.000326"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:23:38.990516" elapsed="0.000373"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:38.991053" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:38.991234" 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-10-20T23:23:38.991424" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-20T23:23:38.990477" elapsed="0.000998"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-20T23:23:38.990327" 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>Concatenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:38.991658" elapsed="0.000018"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-20T23:23:38.991728" elapsed="0.000017"/>
</return>
<msg time="2026-10-20T23:23:38.991885" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-10-20T23:23:38.899941" elapsed="0.091971"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:23:38.993409" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:23:38.992976" elapsed="0.000603">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-10-20T23:23:38.993814" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:23:38.992565" elapsed="0.001291"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:38.994162" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:23:38.993922" elapsed="0.000293"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:23:38.994927" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:23:38.994450" elapsed="0.000502"/>
</kw>
<status status="PASS" start="2026-10-20T23:23:38.994238" elapsed="0.000748"/>
</branch>
<status status="PASS" start="2026-10-20T23:23:38.993904" elapsed="0.001102"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:23:38.995541" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:23:38.995167" elapsed="0.000399"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-20T23:23:38.995611" elapsed="0.000030"/>
</return>
<msg time="2026-10-20T23:23:38.995740" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:23:38.992216" elapsed="0.003547"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:23:38.997041" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:23:38.996677" elapsed="0.000519">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-10-20T23:23:38.997462" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:23:38.996354" elapsed="0.001133"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-10-20T23:23:38.997654" elapsed="0.000024"/>
</return>
<status status="PASS" start="2026-10-20T23:23:38.997553" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-10-20T23:23:38.997536" elapsed="0.000195"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:38.997899" elapsed="0.000051"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the `string` using `separator` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:38.998110" elapsed="0.000019"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-10-20T23:23:38.998169" elapsed="0.000014"/>
</return>
<msg time="2026-10-20T23:23:38.998295" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:23:38.996026" elapsed="0.002410"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:23:38.999913" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:23:38.999494" elapsed="0.000464"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:23:39.000398" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:23:39.000148" 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-10-20T23:23:39.006008" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:23:39.006122" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '405'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/ietf-yang-library:modules-state&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:23:39.006342" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:23:39.000732" elapsed="0.005961">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:23:39.000501" elapsed="0.006270">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:39.006972" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:23:39.006802" elapsed="0.000230"/>
</branch>
<status status="FAIL" start="2026-10-20T23:23:39.000483" elapsed="0.006571">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:39.007642" elapsed="0.000026"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-20T23:23:39.007771" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:23:39.007736" elapsed="0.000075"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:23:39.007719" elapsed="0.000128"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:39.007990" elapsed="0.000020"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-20T23:23:39.008054" elapsed="0.000014"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-10-20T23:23:38.998752" elapsed="0.009401">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:23:39.008221" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-10-20T23:23:38.883625" elapsed="0.124700">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:39.008578" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:23:39.008413" elapsed="0.000232"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:23:39.008396" elapsed="0.000272"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:23:39.008730" elapsed="0.000015"/>
</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-10-20T23:23:38.882177" elapsed="0.126647">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-10-20T23:23:38.873939" elapsed="0.134967">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-10-20T23:23:38.873661" elapsed="0.135298">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</for>
<arg>${member_index_list}</arg>
<status status="FAIL" start="2026-10-20T23:23:38.869278" elapsed="0.139767">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:23:38.868779" elapsed="0.140315">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<status status="FAIL" start="2026-10-20T23:23:38.868746" elapsed="0.140376">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:23:39.009407" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:23:39.009183" elapsed="0.000278"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:23:39.009168" 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-10-20T23:23:38.866935" elapsed="0.142621">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:23:49.018552" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:23:49.017826" elapsed="0.000878"/>
</branch>
<status status="PASS" start="2026-10-20T23:23:49.017779" elapsed="0.000979"/>
</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-10-20T23:23:49.022085" 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-10-20T23:23:49.021205" elapsed="0.000952"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:23:49.023243" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:23:49.022585" elapsed="0.000752"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-20T23:23:49.023442" elapsed="0.000076"/>
</return>
<msg time="2026-10-20T23:23:49.023758" 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-10-20T23:23:49.020257" elapsed="0.003552"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:23:49.026055" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:23:49.025435" elapsed="0.000677"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-20T23:23:49.026235" elapsed="0.000061"/>
</return>
<msg time="2026-10-20T23:23:49.026572" 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-10-20T23:23:49.024624" elapsed="0.001999"/>
</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-10-20T23:23:49.063612" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:23:49.062698" elapsed="0.001059"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:23:49.066277" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:23:49.065970" elapsed="0.000425">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</status>
</kw>
<msg time="2026-10-20T23:23:49.066675" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:23:49.065256" elapsed="0.001558"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:23:49.069470" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:23:49.068505" elapsed="0.001106"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-20T23:23:49.071543" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-10-20T23:23:49.071914" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-10-20T23:23:49.071061" elapsed="0.000994"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:23:49.074278" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:23:49.073711" elapsed="0.000752"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:23:49.076232" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:23:49.075885" elapsed="0.000405"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:23:49.077091" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:23:49.076735" elapsed="0.000390"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:49.077559" elapsed="0.000029"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:49.077815" elapsed="0.000031"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given `key_value_pairs` and/or `items` to the `dictionary`.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:49.078072" elapsed="0.000027"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-10-20T23:23:49.077378" elapsed="0.000767"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-10-20T23:23:49.077202" elapsed="0.000999"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-20T23:23:49.078259" elapsed="0.000038"/>
</return>
<msg time="2026-10-20T23:23:49.078496" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-20T23:23:49.075304" elapsed="0.003261"/>
</kw>
<status status="PASS" start="2026-10-20T23:23:49.074695" elapsed="0.003925"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:49.079091" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:23:49.078703" elapsed="0.000515"/>
</branch>
<status status="PASS" start="2026-10-20T23:23:49.074595" elapsed="0.004702"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:23:49.081973" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-10-20T23:23:49.080851" elapsed="0.001262"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:23:49.082246" elapsed="0.000093"/>
</return>
<arg>folder=${folder}</arg>
<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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-10-20T23:23:49.059561" elapsed="0.023032"/>
</kw>
<msg time="2026-10-20T23:23:49.082998" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:23:49.050350" elapsed="0.032717"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:49.087408" elapsed="0.000025"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:49.091568" elapsed="0.000025"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:49.095615" elapsed="0.000025"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:49.095834" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:49.096016" elapsed="0.000019"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:49.096450" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:23:49.096278" elapsed="0.000330"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:23:49.096264" elapsed="0.000369"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:49.096792" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:49.096972" elapsed="0.000018"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:49.097136" elapsed="0.000019"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-20T23:23:49.096235" elapsed="0.000967"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-20T23:23:49.096085" elapsed="0.001142"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Concatenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:49.097394" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-20T23:23:49.097464" elapsed="0.000015"/>
</return>
<msg time="2026-10-20T23:23:49.097570" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-10-20T23:23:49.048818" elapsed="0.048776"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:23:49.098899" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:23:49.098557" elapsed="0.000493">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-10-20T23:23:49.099293" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:23:49.098213" elapsed="0.001131"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:49.099633" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:23:49.099411" elapsed="0.000275"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:23:49.100398" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:23:49.099902" elapsed="0.000521"/>
</kw>
<status status="PASS" start="2026-10-20T23:23:49.099708" elapsed="0.000747"/>
</branch>
<status status="PASS" start="2026-10-20T23:23:49.099394" elapsed="0.001081"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:23:49.100976" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:23:49.100634" elapsed="0.000366"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-20T23:23:49.101045" elapsed="0.000027"/>
</return>
<msg time="2026-10-20T23:23:49.101181" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:23:49.097898" elapsed="0.003307"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:23:49.102464" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:23:49.102092" elapsed="0.000523">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-10-20T23:23:49.102841" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:23:49.101771" elapsed="0.001094"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-10-20T23:23:49.103030" elapsed="0.000024"/>
</return>
<status status="PASS" start="2026-10-20T23:23:49.102931" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-10-20T23:23:49.102914" elapsed="0.000192"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:49.103270" elapsed="0.000078"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the `string` using `separator` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:49.103519" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-10-20T23:23:49.103581" elapsed="0.000014"/>
</return>
<msg time="2026-10-20T23:23:49.103706" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:23:49.101472" elapsed="0.002257"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:23:49.105039" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:23:49.104810" elapsed="0.000271"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:23:49.105520" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:23:49.105286" elapsed="0.000273"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:23:49.111091" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:23:49.111205" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '405'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/ietf-yang-library:modules-state&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:23:49.111418" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:23:49.105848" elapsed="0.005929">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:23:49.105620" elapsed="0.006235">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:49.112039" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:23:49.111885" elapsed="0.000213"/>
</branch>
<status status="FAIL" start="2026-10-20T23:23:49.105603" elapsed="0.006516">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:49.112658" elapsed="0.000029"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-20T23:23:49.112787" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:23:49.112754" elapsed="0.000071"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:23:49.112738" elapsed="0.000108"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:49.112984" elapsed="0.000019"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-20T23:23:49.113046" elapsed="0.000014"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-10-20T23:23:49.104039" elapsed="0.009107">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:23:49.113227" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-10-20T23:23:49.031881" elapsed="0.081451">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:49.113606" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:23:49.113417" elapsed="0.000258"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:23:49.113401" elapsed="0.000296"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:23:49.113785" elapsed="0.000016"/>
</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-10-20T23:23:49.030399" elapsed="0.083482">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-10-20T23:23:49.024225" elapsed="0.089715">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-10-20T23:23:49.023933" elapsed="0.090061">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</for>
<arg>${member_index_list}</arg>
<status status="FAIL" start="2026-10-20T23:23:49.019444" elapsed="0.094637">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:23:49.018872" elapsed="0.095257">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<status status="FAIL" start="2026-10-20T23:23:49.018839" elapsed="0.095318">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:23:49.114453" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:23:49.114235" elapsed="0.000270"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:23:49.114219" elapsed="0.000309"/>
</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-10-20T23:23:49.016890" elapsed="0.097710">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:23:59.123278" elapsed="0.000082"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:23:59.122668" elapsed="0.000782"/>
</branch>
<status status="PASS" start="2026-10-20T23:23:59.122622" elapsed="0.000882"/>
</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-10-20T23:23:59.126732" 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-10-20T23:23:59.125848" elapsed="0.000953"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:23:59.127832" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:23:59.127164" elapsed="0.000723"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-20T23:23:59.127983" elapsed="0.000070"/>
</return>
<msg time="2026-10-20T23:23:59.128285" 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-10-20T23:23:59.124945" elapsed="0.003423"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:23:59.130541" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:23:59.129884" elapsed="0.000718"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-20T23:23:59.130695" elapsed="0.000060"/>
</return>
<msg time="2026-10-20T23:23:59.130970" 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-10-20T23:23:59.129097" elapsed="0.001925"/>
</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-10-20T23:23:59.171165" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:23:59.169476" elapsed="0.002055"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:23:59.175747" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:23:59.175235" elapsed="0.000665">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</status>
</kw>
<msg time="2026-10-20T23:23:59.176589" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:23:59.174034" elapsed="0.002791"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:23:59.180465" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:23:59.179337" elapsed="0.001290"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-20T23:23:59.182950" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-10-20T23:23:59.183430" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-10-20T23:23:59.182456" elapsed="0.001138"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:23:59.185822" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:23:59.185188" elapsed="0.000802"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:23:59.187903" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:23:59.187565" elapsed="0.000396"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:23:59.188729" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:23:59.188209" elapsed="0.000554"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:59.189173" elapsed="0.000028"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:59.189452" elapsed="0.000032"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given `key_value_pairs` and/or `items` to the `dictionary`.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:59.189730" elapsed="0.000027"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-10-20T23:23:59.188991" elapsed="0.000812"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-10-20T23:23:59.188830" elapsed="0.001012"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-20T23:23:59.189900" elapsed="0.000041"/>
</return>
<msg time="2026-10-20T23:23:59.190123" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-20T23:23:59.186905" elapsed="0.003287"/>
</kw>
<status status="PASS" start="2026-10-20T23:23:59.186233" elapsed="0.004011"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:59.190771" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:23:59.190356" elapsed="0.000519"/>
</branch>
<status status="PASS" start="2026-10-20T23:23:59.186127" elapsed="0.004826"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:23:59.193478" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-10-20T23:23:59.192455" elapsed="0.001184"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:23:59.193753" elapsed="0.000074"/>
</return>
<arg>folder=${folder}</arg>
<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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-10-20T23:23:59.164037" elapsed="0.030042"/>
</kw>
<msg time="2026-10-20T23:23:59.194499" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:23:59.153547" elapsed="0.041043"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:59.200720" elapsed="0.000036"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:59.206075" elapsed="0.000025"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:59.210122" elapsed="0.000025"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:59.210371" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:59.210579" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:59.210976" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:23:59.210827" elapsed="0.000304"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:23:59.210813" elapsed="0.000343"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:59.211336" 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-10-20T23:23:59.211531" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:59.211699" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-20T23:23:59.210785" elapsed="0.000967"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-20T23:23:59.210649" elapsed="0.001127"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Concatenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:59.211929" elapsed="0.000018"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-20T23:23:59.211996" elapsed="0.000015"/>
</return>
<msg time="2026-10-20T23:23:59.212105" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-10-20T23:23:59.152113" elapsed="0.060016"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:23:59.213477" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:23:59.213094" elapsed="0.000557">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-10-20T23:23:59.213881" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:23:59.212768" elapsed="0.001138"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:59.214191" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:23:59.213971" elapsed="0.000272"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:23:59.214959" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:23:59.214485" elapsed="0.000498"/>
</kw>
<status status="PASS" start="2026-10-20T23:23:59.214266" elapsed="0.000750"/>
</branch>
<status status="PASS" start="2026-10-20T23:23:59.213954" elapsed="0.001081"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:23:59.215580" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:23:59.215197" elapsed="0.000408"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-20T23:23:59.215651" elapsed="0.000027"/>
</return>
<msg time="2026-10-20T23:23:59.215776" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:23:59.212452" elapsed="0.003346"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:23:59.217049" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:23:59.216707" elapsed="0.000495">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-10-20T23:23:59.217454" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:23:59.216374" elapsed="0.001105"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-10-20T23:23:59.217657" elapsed="0.000024"/>
</return>
<status status="PASS" start="2026-10-20T23:23:59.217557" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-10-20T23:23:59.217539" elapsed="0.000196"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:59.217888" elapsed="0.000051"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the `string` using `separator` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:59.218101" elapsed="0.000019"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-10-20T23:23:59.218161" elapsed="0.000014"/>
</return>
<msg time="2026-10-20T23:23:59.218287" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:23:59.216047" elapsed="0.002319"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:23:59.219675" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:23:59.219434" elapsed="0.000284"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:23:59.220125" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:23:59.219907" elapsed="0.000258"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:23:59.226530" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:23:59.226633" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '405'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/ietf-yang-library:modules-state&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:23:59.226817" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:23:59.220480" elapsed="0.006692">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:23:59.220226" elapsed="0.007022">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:59.227468" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:23:59.227278" elapsed="0.000264"/>
</branch>
<status status="FAIL" start="2026-10-20T23:23:59.220208" elapsed="0.007356">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:59.228059" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-20T23:23:59.228184" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:23:59.228150" elapsed="0.000073"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:23:59.228134" elapsed="0.000110"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:59.228405" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-20T23:23:59.228470" elapsed="0.000014"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-10-20T23:23:59.218695" elapsed="0.009891">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:23:59.228653" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-10-20T23:23:59.136013" elapsed="0.092729">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-10-20T23:23:59.228985" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:23:59.228826" elapsed="0.000223"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:23:59.228810" elapsed="0.000260"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:23:59.229131" elapsed="0.000016"/>
</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-10-20T23:23:59.134580" elapsed="0.094645">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-10-20T23:23:59.128765" elapsed="0.100520">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-10-20T23:23:59.128485" elapsed="0.100884">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</for>
<arg>${member_index_list}</arg>
<status status="FAIL" start="2026-10-20T23:23:59.124122" elapsed="0.105335">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:23:59.123645" elapsed="0.105860">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<status status="FAIL" start="2026-10-20T23:23:59.123611" elapsed="0.105937">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:23:59.229816" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:23:59.229611" elapsed="0.000257"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:23:59.229596" elapsed="0.000294"/>
</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-10-20T23:23:59.121760" elapsed="0.108203">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:24:09.238620" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:24:09.237973" elapsed="0.000789"/>
</branch>
<status status="PASS" start="2026-10-20T23:24:09.237926" elapsed="0.000890"/>
</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-10-20T23:24:09.242154" 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-10-20T23:24:09.241222" elapsed="0.000992"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:24:09.243226" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:24:09.242595" elapsed="0.000686"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-20T23:24:09.243409" elapsed="0.000071"/>
</return>
<msg time="2026-10-20T23:24:09.243712" 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-10-20T23:24:09.240291" elapsed="0.003473"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:24:09.245977" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:24:09.245285" elapsed="0.000751"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-20T23:24:09.246131" elapsed="0.000058"/>
</return>
<msg time="2026-10-20T23:24:09.246434" 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-10-20T23:24:09.244535" elapsed="0.001951"/>
</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-10-20T23:24:09.281873" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:24:09.280984" elapsed="0.001044"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:24:09.284835" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:24:09.284479" elapsed="0.000504">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</status>
</kw>
<msg time="2026-10-20T23:24:09.285269" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:24:09.283584" elapsed="0.001863"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:24:09.288261" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:24:09.287263" elapsed="0.001391"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-20T23:24:09.290767" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-10-20T23:24:09.291162" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-10-20T23:24:09.290232" elapsed="0.001095"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:24:09.293685" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:24:09.293105" elapsed="0.000790"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:24:09.295846" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:24:09.295512" elapsed="0.000434"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:24:09.296656" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:24:09.296191" elapsed="0.000499"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:09.297110" elapsed="0.000029"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:09.297388" elapsed="0.000031"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given `key_value_pairs` and/or `items` to the `dictionary`.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:09.297645" elapsed="0.000028"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-10-20T23:24:09.296929" elapsed="0.000789"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-10-20T23:24:09.296753" elapsed="0.001005"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-20T23:24:09.297813" elapsed="0.000037"/>
</return>
<msg time="2026-10-20T23:24:09.298060" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-20T23:24:09.294938" elapsed="0.003191"/>
</kw>
<status status="PASS" start="2026-10-20T23:24:09.294139" elapsed="0.004046"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:09.298709" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:24:09.298269" elapsed="0.000548"/>
</branch>
<status status="PASS" start="2026-10-20T23:24:09.294035" elapsed="0.004887"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:24:09.301531" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-10-20T23:24:09.300505" elapsed="0.001173"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:24:09.301796" elapsed="0.000103"/>
</return>
<arg>folder=${folder}</arg>
<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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-10-20T23:24:09.277637" elapsed="0.024524"/>
</kw>
<msg time="2026-10-20T23:24:09.302588" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:24:09.268963" elapsed="0.033697"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:09.308780" 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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:09.314467" elapsed="0.000035"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:09.319876" elapsed="0.000026"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:09.320095" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:09.320278" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:09.320691" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:24:09.320543" elapsed="0.000306"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:24:09.320528" elapsed="0.000362"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:09.321051" elapsed="0.000019"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:09.321233" elapsed="0.000018"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:09.321418" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-20T23:24:09.320499" elapsed="0.000972"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-20T23:24:09.320363" elapsed="0.001132"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Concatenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:09.321647" elapsed="0.000019"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-20T23:24:09.321714" elapsed="0.000015"/>
</return>
<msg time="2026-10-20T23:24:09.321820" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-10-20T23:24:09.267545" elapsed="0.054299"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:24:09.323172" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:24:09.322812" elapsed="0.000533">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-10-20T23:24:09.323576" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:24:09.322489" elapsed="0.001111"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:09.323898" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:24:09.323665" elapsed="0.000288"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:24:09.324652" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:24:09.324167" elapsed="0.000510"/>
</kw>
<status status="PASS" start="2026-10-20T23:24:09.323976" elapsed="0.000734"/>
</branch>
<status status="PASS" start="2026-10-20T23:24:09.323648" elapsed="0.001082"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:24:09.325257" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:24:09.324914" elapsed="0.000368"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-20T23:24:09.325347" elapsed="0.000027"/>
</return>
<msg time="2026-10-20T23:24:09.325473" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:24:09.322166" elapsed="0.003330"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:24:09.326755" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:24:09.326410" elapsed="0.000511">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-10-20T23:24:09.327148" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:24:09.326056" elapsed="0.001116"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-10-20T23:24:09.327360" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-10-20T23:24:09.327239" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-10-20T23:24:09.327222" elapsed="0.000221"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:09.327598" elapsed="0.000053"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the `string` using `separator` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:09.327811" elapsed="0.000019"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-10-20T23:24:09.327901" elapsed="0.000017"/>
</return>
<msg time="2026-10-20T23:24:09.328030" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:24:09.325741" elapsed="0.002312"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:24:09.329395" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:24:09.329149" elapsed="0.000290"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:24:09.329845" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:24:09.329627" 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-10-20T23:24:09.335619" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:24:09.335722" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '405'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/ietf-yang-library:modules-state&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:24:09.335922" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:24:09.330197" elapsed="0.006068">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:24:09.329968" elapsed="0.006389">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:09.336545" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:24:09.336389" elapsed="0.000215"/>
</branch>
<status status="FAIL" start="2026-10-20T23:24:09.329951" elapsed="0.006674">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:09.337135" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-20T23:24:09.337260" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:24:09.337226" elapsed="0.000074"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:24:09.337210" elapsed="0.000134"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:09.337485" elapsed="0.000020"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-20T23:24:09.337548" elapsed="0.000014"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-10-20T23:24:09.328410" elapsed="0.009238">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:24:09.337716" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-10-20T23:24:09.251419" elapsed="0.086387">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:09.338065" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:24:09.337907" elapsed="0.000225"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:24:09.337890" elapsed="0.000264"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:24:09.338215" elapsed="0.000015"/>
</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-10-20T23:24:09.249941" elapsed="0.088384">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-10-20T23:24:09.244167" elapsed="0.094220">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-10-20T23:24:09.243910" elapsed="0.094529">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</for>
<arg>${member_index_list}</arg>
<status status="FAIL" start="2026-10-20T23:24:09.239470" elapsed="0.099053">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:24:09.238965" elapsed="0.099607">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<status status="FAIL" start="2026-10-20T23:24:09.238931" elapsed="0.099670">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:24:09.338892" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:24:09.338663" elapsed="0.000285"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:24:09.338648" elapsed="0.000329"/>
</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-10-20T23:24:09.237070" elapsed="0.101980">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:24:19.347671" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:24:19.346961" elapsed="0.000853"/>
</branch>
<status status="PASS" start="2026-10-20T23:24:19.346898" elapsed="0.000972"/>
</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-10-20T23:24:19.351034" 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-10-20T23:24:19.350168" elapsed="0.000925"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:24:19.352172" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:24:19.351565" elapsed="0.000683"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-20T23:24:19.352372" elapsed="0.000074"/>
</return>
<msg time="2026-10-20T23:24:19.352678" 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-10-20T23:24:19.349304" elapsed="0.003425"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:24:19.354875" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:24:19.354231" elapsed="0.000719"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-20T23:24:19.355049" elapsed="0.000062"/>
</return>
<msg time="2026-10-20T23:24:19.355414" 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-10-20T23:24:19.353487" elapsed="0.001984"/>
</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-10-20T23:24:19.391264" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:24:19.390424" elapsed="0.001030"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:24:19.394236" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:24:19.393908" elapsed="0.000538">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</status>
</kw>
<msg time="2026-10-20T23:24:19.394733" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:24:19.393146" elapsed="0.001727"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:24:19.397570" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:24:19.396507" elapsed="0.001211"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-20T23:24:19.399809" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-10-20T23:24:19.400189" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-10-20T23:24:19.399354" elapsed="0.001109"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:24:19.402703" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:24:19.401985" elapsed="0.000897"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:24:19.404872" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:24:19.404521" elapsed="0.000410"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:24:19.405607" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:24:19.405178" elapsed="0.000463"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:19.406059" elapsed="0.000029"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:19.406427" elapsed="0.000034"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given `key_value_pairs` and/or `items` to the `dictionary`.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:19.406692" elapsed="0.000028"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-10-20T23:24:19.405876" elapsed="0.000890"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-10-20T23:24:19.405711" elapsed="0.001096"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-20T23:24:19.406867" elapsed="0.000039"/>
</return>
<msg time="2026-10-20T23:24:19.407095" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-20T23:24:19.403794" elapsed="0.003372"/>
</kw>
<status status="PASS" start="2026-10-20T23:24:19.403131" elapsed="0.004109"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:19.407796" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:24:19.407386" elapsed="0.000522"/>
</branch>
<status status="PASS" start="2026-10-20T23:24:19.403025" elapsed="0.004963"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:24:19.410593" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-10-20T23:24:19.409574" elapsed="0.001125"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:24:19.410786" elapsed="0.000054"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-10-20T23:24:19.387160" elapsed="0.023866"/>
</kw>
<msg time="2026-10-20T23:24:19.411360" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:24:19.378255" elapsed="0.033212"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:19.417449" 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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:19.421564" 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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:19.425647" elapsed="0.000026"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:19.425871" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:19.426054" elapsed="0.000019"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:19.426509" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:24:19.426357" elapsed="0.000316"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:24:19.426333" elapsed="0.000368"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:19.426862" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:19.427041" 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-10-20T23:24:19.427218" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-20T23:24:19.426282" elapsed="0.000989"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-20T23:24:19.426123" elapsed="0.001172"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Concatenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:19.427478" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-20T23:24:19.427550" elapsed="0.000015"/>
</return>
<msg time="2026-10-20T23:24:19.427660" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-10-20T23:24:19.376855" elapsed="0.050828"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:24:19.429044" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:24:19.428680" elapsed="0.000544">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-10-20T23:24:19.429491" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:24:19.428339" elapsed="0.001178"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:19.429806" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:24:19.429583" elapsed="0.000276"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:24:19.430589" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:24:19.430073" elapsed="0.000540"/>
</kw>
<status status="PASS" start="2026-10-20T23:24:19.429881" elapsed="0.000764"/>
</branch>
<status status="PASS" start="2026-10-20T23:24:19.429565" elapsed="0.001102"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:24:19.431181" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:24:19.430828" elapsed="0.000391"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-20T23:24:19.431266" elapsed="0.000028"/>
</return>
<msg time="2026-10-20T23:24:19.431428" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:24:19.427994" elapsed="0.003458"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:24:19.432735" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:24:19.432380" elapsed="0.000511">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-10-20T23:24:19.433125" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:24:19.432008" elapsed="0.001142"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-10-20T23:24:19.433362" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-10-20T23:24:19.433231" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-10-20T23:24:19.433212" 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-10-20T23:24:19.433600" elapsed="0.000053"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the `string` using `separator` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:19.433821" elapsed="0.000019"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-10-20T23:24:19.433882" elapsed="0.000014"/>
</return>
<msg time="2026-10-20T23:24:19.434009" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:24:19.431704" elapsed="0.002329"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:24:19.435474" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:24:19.435154" elapsed="0.000365"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:24:19.435938" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:24:19.435711" elapsed="0.000267"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:24:19.441958" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:24:19.442062" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '405'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/ietf-yang-library:modules-state&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:24:19.442276" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:24:19.436298" elapsed="0.006366">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:24:19.436041" elapsed="0.006702">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:19.442928" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:24:19.442775" elapsed="0.000214"/>
</branch>
<status status="FAIL" start="2026-10-20T23:24:19.436023" elapsed="0.006989">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:19.443599" elapsed="0.000026"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-20T23:24:19.443728" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:24:19.443693" elapsed="0.000075"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:24:19.443676" elapsed="0.000113"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:19.443930" elapsed="0.000020"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-20T23:24:19.443994" elapsed="0.000014"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-10-20T23:24:19.434448" elapsed="0.009647">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:24:19.444165" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-10-20T23:24:19.360711" elapsed="0.083562">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:19.444560" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:24:19.444394" elapsed="0.000233"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:24:19.444376" elapsed="0.000275"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:24:19.444714" elapsed="0.000016"/>
</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-10-20T23:24:19.359178" elapsed="0.085635">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-10-20T23:24:19.353101" elapsed="0.091773">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-10-20T23:24:19.352847" elapsed="0.092081">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</for>
<arg>${member_index_list}</arg>
<status status="FAIL" start="2026-10-20T23:24:19.348525" elapsed="0.096488">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:24:19.347986" elapsed="0.097077">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<status status="FAIL" start="2026-10-20T23:24:19.347953" elapsed="0.097139">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:24:19.445421" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:24:19.445156" elapsed="0.000322"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:24:19.445139" elapsed="0.000362"/>
</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-10-20T23:24:19.346054" elapsed="0.099522">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:24:29.454444" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:24:29.453773" elapsed="0.000833"/>
</branch>
<status status="PASS" start="2026-10-20T23:24:29.453725" elapsed="0.000936"/>
</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-10-20T23:24:29.457880" 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-10-20T23:24:29.456998" elapsed="0.000941"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:24:29.458954" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:24:29.458280" elapsed="0.000729"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-20T23:24:29.459106" elapsed="0.000071"/>
</return>
<msg time="2026-10-20T23:24:29.459441" 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-10-20T23:24:29.456079" elapsed="0.003414"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:24:29.461671" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:24:29.461014" elapsed="0.000714"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-20T23:24:29.461821" elapsed="0.000059"/>
</return>
<msg time="2026-10-20T23:24:29.462092" 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-10-20T23:24:29.460218" elapsed="0.001925"/>
</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-10-20T23:24:29.497630" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:24:29.496777" elapsed="0.000998"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:24:29.500581" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:24:29.500021" elapsed="0.000664">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</status>
</kw>
<msg time="2026-10-20T23:24:29.500961" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:24:29.499265" elapsed="0.001834"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:24:29.503613" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:24:29.502635" elapsed="0.001123"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-20T23:24:29.505841" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-10-20T23:24:29.506212" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-10-20T23:24:29.505213" elapsed="0.001160"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:24:29.508509" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:24:29.507936" elapsed="0.000756"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:24:29.510576" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:24:29.510201" elapsed="0.000434"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:24:29.511241" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:24:29.510883" elapsed="0.000391"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:29.511825" elapsed="0.000029"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:29.512083" elapsed="0.000031"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given `key_value_pairs` and/or `items` to the `dictionary`.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:29.512360" elapsed="0.000029"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-10-20T23:24:29.511642" elapsed="0.000793"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-10-20T23:24:29.511438" elapsed="0.001037"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-20T23:24:29.512533" elapsed="0.000052"/>
</return>
<msg time="2026-10-20T23:24:29.512766" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-20T23:24:29.509654" elapsed="0.003180"/>
</kw>
<status status="PASS" start="2026-10-20T23:24:29.508930" elapsed="0.003958"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:29.513395" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:24:29.512970" elapsed="0.000533"/>
</branch>
<status status="PASS" start="2026-10-20T23:24:29.508827" elapsed="0.004769"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:24:29.516095" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-10-20T23:24:29.515081" elapsed="0.001156"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:24:29.516394" elapsed="0.000074"/>
</return>
<arg>folder=${folder}</arg>
<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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-10-20T23:24:29.493638" elapsed="0.023100"/>
</kw>
<msg time="2026-10-20T23:24:29.517192" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:24:29.484782" elapsed="0.032472"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:29.521620" elapsed="0.000026"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:29.525684" elapsed="0.000025"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:29.529745" elapsed="0.000025"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:29.529969" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:29.530152" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:29.530584" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:24:29.530421" elapsed="0.000319"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:24:29.530406" elapsed="0.000360"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:29.530925" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:29.531105" 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-10-20T23:24:29.531270" elapsed="0.000018"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-20T23:24:29.530377" elapsed="0.000958"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-20T23:24:29.530221" elapsed="0.001138"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Concatenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:29.531512" elapsed="0.000019"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-20T23:24:29.531596" elapsed="0.000016"/>
</return>
<msg time="2026-10-20T23:24:29.531705" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-10-20T23:24:29.483366" elapsed="0.048363"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:24:29.533059" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:24:29.532700" elapsed="0.000515">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-10-20T23:24:29.533466" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:24:29.532358" elapsed="0.001133"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:29.533812" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:24:29.533588" elapsed="0.000277"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:24:29.534591" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:24:29.534080" elapsed="0.000536"/>
</kw>
<status status="PASS" start="2026-10-20T23:24:29.533888" elapsed="0.000761"/>
</branch>
<status status="PASS" start="2026-10-20T23:24:29.533569" elapsed="0.001100"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:24:29.535175" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:24:29.534832" elapsed="0.000368"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-20T23:24:29.535245" elapsed="0.000026"/>
</return>
<msg time="2026-10-20T23:24:29.535400" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:24:29.532035" elapsed="0.003388"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:24:29.536690" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:24:29.536324" elapsed="0.000524">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-10-20T23:24:29.537079" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:24:29.535986" elapsed="0.001117"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-10-20T23:24:29.537267" elapsed="0.000024"/>
</return>
<status status="PASS" start="2026-10-20T23:24:29.537168" elapsed="0.000212"/>
</branch>
<status status="PASS" start="2026-10-20T23:24:29.537151" 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-10-20T23:24:29.537574" elapsed="0.000058"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the `string` using `separator` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:29.537793" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-10-20T23:24:29.537854" elapsed="0.000015"/>
</return>
<msg time="2026-10-20T23:24:29.537981" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:24:29.535689" elapsed="0.002315"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:24:29.539288" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:24:29.539062" elapsed="0.000290"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:24:29.539821" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:24:29.539598" elapsed="0.000263"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:24:29.545263" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:24:29.545388" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '405'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/ietf-yang-library:modules-state&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:24:29.545589" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:24:29.540150" elapsed="0.005794">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:24:29.539922" elapsed="0.006099">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:29.546202" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:24:29.546051" elapsed="0.000211"/>
</branch>
<status status="FAIL" start="2026-10-20T23:24:29.539904" elapsed="0.006380">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:29.546871" elapsed="0.000026"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-20T23:24:29.546999" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:24:29.546964" elapsed="0.000074"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:24:29.546947" elapsed="0.000112"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:29.547214" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-20T23:24:29.547279" elapsed="0.000014"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-10-20T23:24:29.538342" elapsed="0.009066">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:24:29.547477" elapsed="0.000014"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-10-20T23:24:29.467154" elapsed="0.080425">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:29.547823" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:24:29.547664" elapsed="0.000224"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:24:29.547648" elapsed="0.000262"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:24:29.547973" elapsed="0.000016"/>
</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-10-20T23:24:29.465735" elapsed="0.082333">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-10-20T23:24:29.459891" elapsed="0.088236">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-10-20T23:24:29.459631" elapsed="0.088548">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</for>
<arg>${member_index_list}</arg>
<status status="FAIL" start="2026-10-20T23:24:29.455248" elapsed="0.093017">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:24:29.454775" elapsed="0.093578">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<status status="FAIL" start="2026-10-20T23:24:29.454742" elapsed="0.093645">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:24:29.548670" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:24:29.548451" elapsed="0.000272"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:24:29.548436" elapsed="0.000309"/>
</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-10-20T23:24:29.452814" elapsed="0.096005">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:24:39.557668" elapsed="0.000058"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:24:39.556974" elapsed="0.000846"/>
</branch>
<status status="PASS" start="2026-10-20T23:24:39.556923" elapsed="0.000977"/>
</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-10-20T23:24:39.561254" 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-10-20T23:24:39.560367" elapsed="0.000981"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:24:39.562452" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:24:39.561733" elapsed="0.000782"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-20T23:24:39.562636" elapsed="0.000097"/>
</return>
<msg time="2026-10-20T23:24:39.563006" 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-10-20T23:24:39.559420" elapsed="0.003640"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:24:39.565392" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:24:39.564677" elapsed="0.000773"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-20T23:24:39.565564" elapsed="0.000069"/>
</return>
<msg time="2026-10-20T23:24:39.565911" 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-10-20T23:24:39.563862" elapsed="0.002108"/>
</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-10-20T23:24:39.602251" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:24:39.601383" elapsed="0.001044"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:24:39.605173" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:24:39.604854" elapsed="0.000417">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</status>
</kw>
<msg time="2026-10-20T23:24:39.605655" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:24:39.604129" elapsed="0.001671"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:24:39.609863" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:24:39.607424" elapsed="0.002609"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-20T23:24:39.612155" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-10-20T23:24:39.612575" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-10-20T23:24:39.611692" elapsed="0.001026"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:24:39.614989" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:24:39.614261" elapsed="0.000904"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:24:39.617349" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:24:39.616977" elapsed="0.000436"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:24:39.618044" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:24:39.617663" elapsed="0.000414"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:39.618548" elapsed="0.000030"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:39.618809" elapsed="0.000033"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given `key_value_pairs` and/or `items` to the `dictionary`.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:39.619120" elapsed="0.000028"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-10-20T23:24:39.618303" elapsed="0.000892"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-10-20T23:24:39.618142" elapsed="0.001093"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-20T23:24:39.619292" elapsed="0.000069"/>
</return>
<msg time="2026-10-20T23:24:39.619553" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-20T23:24:39.616179" elapsed="0.003445"/>
</kw>
<status status="PASS" start="2026-10-20T23:24:39.615483" elapsed="0.004196"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:39.620186" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:24:39.619762" elapsed="0.000532"/>
</branch>
<status status="PASS" start="2026-10-20T23:24:39.615375" elapsed="0.005044"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:24:39.622994" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-10-20T23:24:39.621947" elapsed="0.001195"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:24:39.623262" elapsed="0.000118"/>
</return>
<arg>folder=${folder}</arg>
<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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-10-20T23:24:39.598133" elapsed="0.025530"/>
</kw>
<msg time="2026-10-20T23:24:39.624081" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:24:39.589519" elapsed="0.034635"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:39.630349" elapsed="0.000038"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:39.636126" 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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:39.641962" elapsed="0.000038"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:39.642268" 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-10-20T23:24:39.642563" 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-10-20T23:24:39.643028" elapsed="0.000064"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:24:39.642858" elapsed="0.000349"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:24:39.642843" elapsed="0.000390"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:39.643414" 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-10-20T23:24:39.643599" 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-10-20T23:24:39.643763" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-20T23:24:39.642814" elapsed="0.000998"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-20T23:24:39.642667" 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>Concatenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:39.644010" elapsed="0.000022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-20T23:24:39.644082" elapsed="0.000016"/>
</return>
<msg time="2026-10-20T23:24:39.644191" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-10-20T23:24:39.588033" elapsed="0.056182"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:24:39.645604" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:24:39.645218" elapsed="0.000542">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-10-20T23:24:39.646019" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:24:39.644853" elapsed="0.001192"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:39.646363" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:24:39.646113" elapsed="0.000311"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:24:39.647133" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:24:39.646638" elapsed="0.000520"/>
</kw>
<status status="PASS" start="2026-10-20T23:24:39.646448" elapsed="0.000743"/>
</branch>
<status status="PASS" start="2026-10-20T23:24:39.646095" elapsed="0.001116"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:24:39.647743" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:24:39.647396" elapsed="0.000372"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-20T23:24:39.647815" elapsed="0.000027"/>
</return>
<msg time="2026-10-20T23:24:39.647964" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:24:39.644541" elapsed="0.003454"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:24:39.649269" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:24:39.648912" elapsed="0.000534">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-10-20T23:24:39.649674" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:24:39.648574" elapsed="0.001124"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-10-20T23:24:39.649867" elapsed="0.000041"/>
</return>
<status status="PASS" start="2026-10-20T23:24:39.649765" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-10-20T23:24:39.649747" elapsed="0.000217"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:39.650129" elapsed="0.000053"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the `string` using `separator` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:39.650405" elapsed="0.000022"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-10-20T23:24:39.650469" elapsed="0.000015"/>
</return>
<msg time="2026-10-20T23:24:39.650599" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:24:39.648249" elapsed="0.002373"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:24:39.651958" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:24:39.651699" elapsed="0.000304"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:24:39.652450" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:24:39.652203" 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-10-20T23:24:39.658018" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:24:39.658122" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '405'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/ietf-yang-library:modules-state&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:24:39.658339" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:24:39.652785" elapsed="0.005911">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:24:39.652554" elapsed="0.006220">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:39.658976" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:24:39.658806" elapsed="0.000232"/>
</branch>
<status status="FAIL" start="2026-10-20T23:24:39.652536" elapsed="0.006525">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:39.659605" elapsed="0.000026"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-20T23:24:39.659732" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:24:39.659698" elapsed="0.000074"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:24:39.659681" elapsed="0.000113"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:39.659951" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-20T23:24:39.660016" elapsed="0.000014"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-10-20T23:24:39.650952" elapsed="0.009165">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:24:39.660194" elapsed="0.000017"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-10-20T23:24:39.571227" elapsed="0.089063">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:39.660565" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:24:39.660399" elapsed="0.000235"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:24:39.660382" elapsed="0.000275"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:24:39.660725" elapsed="0.000016"/>
</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-10-20T23:24:39.569687" elapsed="0.091138">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-10-20T23:24:39.563494" elapsed="0.097407">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-10-20T23:24:39.563177" elapsed="0.097781">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</for>
<arg>${member_index_list}</arg>
<status status="FAIL" start="2026-10-20T23:24:39.558578" elapsed="0.102469">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:24:39.558026" elapsed="0.103072">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<status status="FAIL" start="2026-10-20T23:24:39.557992" elapsed="0.103136">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:24:39.661472" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:24:39.661195" elapsed="0.000333"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:24:39.661177" elapsed="0.000375"/>
</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-10-20T23:24:39.556042" elapsed="0.105590">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:24:49.671027" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:24:49.670393" elapsed="0.000777"/>
</branch>
<status status="PASS" start="2026-10-20T23:24:49.670344" elapsed="0.000881"/>
</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-10-20T23:24:49.674474" 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-10-20T23:24:49.673588" elapsed="0.000947"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:24:49.675542" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:24:49.674898" elapsed="0.000698"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-20T23:24:49.675692" elapsed="0.000071"/>
</return>
<msg time="2026-10-20T23:24:49.676013" 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-10-20T23:24:49.672664" elapsed="0.003401"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:24:49.678194" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:24:49.677580" elapsed="0.000669"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-20T23:24:49.678373" elapsed="0.000059"/>
</return>
<msg time="2026-10-20T23:24:49.678646" 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-10-20T23:24:49.676800" elapsed="0.001895"/>
</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-10-20T23:24:49.713297" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:24:49.712457" elapsed="0.001072"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:24:49.716161" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:24:49.715871" elapsed="0.000386">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</status>
</kw>
<msg time="2026-10-20T23:24:49.716621" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:24:49.715147" elapsed="0.001612"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:24:49.719350" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:24:49.718281" elapsed="0.001211"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-20T23:24:49.721508" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-10-20T23:24:49.721901" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-10-20T23:24:49.721059" elapsed="0.000983"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:24:49.724194" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:24:49.723625" elapsed="0.000845"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:24:49.726638" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:24:49.726027" elapsed="0.000680"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:24:49.727629" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:24:49.727238" elapsed="0.000424"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:49.728102" elapsed="0.000029"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:49.728430" elapsed="0.000032"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given `key_value_pairs` and/or `items` to the `dictionary`.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:49.728690" elapsed="0.000027"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-10-20T23:24:49.727921" elapsed="0.000842"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-10-20T23:24:49.727733" elapsed="0.001070"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-20T23:24:49.728885" elapsed="0.000046"/>
</return>
<msg time="2026-10-20T23:24:49.729127" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-20T23:24:49.725345" elapsed="0.003850"/>
</kw>
<status status="PASS" start="2026-10-20T23:24:49.724713" elapsed="0.004535"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:49.729757" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:24:49.729360" elapsed="0.000524"/>
</branch>
<status status="PASS" start="2026-10-20T23:24:49.724608" elapsed="0.005356"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:24:49.732203" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-10-20T23:24:49.731454" elapsed="0.000870"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:24:49.732409" elapsed="0.000053"/>
</return>
<arg>folder=${folder}</arg>
<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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-10-20T23:24:49.709296" elapsed="0.023348"/>
</kw>
<msg time="2026-10-20T23:24:49.732949" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:24:49.701015" elapsed="0.031994"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:49.737465" elapsed="0.000026"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:49.741462" elapsed="0.000025"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:49.745499" elapsed="0.000025"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:49.745743" elapsed="0.000020"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:49.745940" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:49.746362" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:24:49.746196" elapsed="0.000324"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:24:49.746180" 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-10-20T23:24:49.746707" elapsed="0.000019"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:49.746911" 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-10-20T23:24:49.747074" elapsed="0.000018"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-20T23:24:49.746149" elapsed="0.000973"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-20T23:24:49.746012" elapsed="0.001135"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Concatenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:49.747300" elapsed="0.000034"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-20T23:24:49.747385" elapsed="0.000015"/>
</return>
<msg time="2026-10-20T23:24:49.747497" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-10-20T23:24:49.699616" elapsed="0.047905"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:24:49.748975" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:24:49.748520" elapsed="0.000623">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-10-20T23:24:49.749391" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:24:49.748163" elapsed="0.001253"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:49.749704" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:24:49.749481" elapsed="0.000276"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:24:49.750468" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:24:49.749988" elapsed="0.000505"/>
</kw>
<status status="PASS" start="2026-10-20T23:24:49.749779" elapsed="0.000746"/>
</branch>
<status status="PASS" start="2026-10-20T23:24:49.749464" elapsed="0.001080"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:24:49.751061" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:24:49.750703" elapsed="0.000382"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-20T23:24:49.751130" elapsed="0.000026"/>
</return>
<msg time="2026-10-20T23:24:49.751253" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:24:49.747843" elapsed="0.003432"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:24:49.752535" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:24:49.752173" elapsed="0.000513">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-10-20T23:24:49.752928" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:24:49.751856" elapsed="0.001096"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-10-20T23:24:49.753117" elapsed="0.000024"/>
</return>
<status status="PASS" start="2026-10-20T23:24:49.753018" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-10-20T23:24:49.753001" elapsed="0.000192"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:49.753414" elapsed="0.000050"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the `string` using `separator` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:49.753626" elapsed="0.000019"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-10-20T23:24:49.753687" elapsed="0.000014"/>
</return>
<msg time="2026-10-20T23:24:49.753824" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:24:49.751548" elapsed="0.002305"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:24:49.755127" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:24:49.754898" elapsed="0.000271"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:24:49.755594" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:24:49.755376" elapsed="0.000258"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:24:49.762285" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:24:49.762418" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '405'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/ietf-yang-library:modules-state&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:24:49.762604" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:24:49.755932" elapsed="0.007043">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:24:49.755694" elapsed="0.007359">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:49.763232" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:24:49.763084" elapsed="0.000207"/>
</branch>
<status status="FAIL" start="2026-10-20T23:24:49.755677" elapsed="0.007655">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:49.763841" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-20T23:24:49.763964" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:24:49.763931" elapsed="0.000072"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:24:49.763915" elapsed="0.000108"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:49.764160" elapsed="0.000020"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-20T23:24:49.764223" elapsed="0.000013"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-10-20T23:24:49.754164" elapsed="0.010187">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:24:49.764419" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-10-20T23:24:49.683551" elapsed="0.080966">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:49.764762" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:24:49.764603" elapsed="0.000236"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:24:49.764587" elapsed="0.000274"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:24:49.764922" elapsed="0.000015"/>
</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-10-20T23:24:49.682117" elapsed="0.082899">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-10-20T23:24:49.676468" elapsed="0.088608">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-10-20T23:24:49.676181" elapsed="0.088949">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</for>
<arg>${member_index_list}</arg>
<status status="FAIL" start="2026-10-20T23:24:49.671868" elapsed="0.093346">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:24:49.671369" elapsed="0.093893">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<status status="FAIL" start="2026-10-20T23:24:49.671334" elapsed="0.093956">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:24:49.765572" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:24:49.765374" elapsed="0.000251"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:24:49.765358" elapsed="0.000289"/>
</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-10-20T23:24:49.669490" elapsed="0.096229">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:24:59.774830" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:24:59.774154" elapsed="0.000825"/>
</branch>
<status status="PASS" start="2026-10-20T23:24:59.774106" elapsed="0.000927"/>
</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-10-20T23:24:59.778251" 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-10-20T23:24:59.777407" elapsed="0.000932"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:24:59.779414" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:24:59.778760" elapsed="0.000711"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-20T23:24:59.779569" elapsed="0.000069"/>
</return>
<msg time="2026-10-20T23:24:59.779892" 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-10-20T23:24:59.776479" elapsed="0.003465"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:24:59.782101" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:24:59.781476" elapsed="0.000680"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-20T23:24:59.782250" elapsed="0.000101"/>
</return>
<msg time="2026-10-20T23:24:59.782606" 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-10-20T23:24:59.780684" elapsed="0.001974"/>
</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-10-20T23:24:59.820578" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:24:59.819450" elapsed="0.001293"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:24:59.823866" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:24:59.823560" elapsed="0.000401">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</status>
</kw>
<msg time="2026-10-20T23:24:59.824238" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:24:59.822659" elapsed="0.001743"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:24:59.827038" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:24:59.826014" elapsed="0.001169"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-20T23:24:59.829461" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-10-20T23:24:59.829908" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-10-20T23:24:59.828866" elapsed="0.001235"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:24:59.832587" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:24:59.832002" elapsed="0.000771"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:24:59.834736" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:24:59.834346" elapsed="0.000451"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:24:59.835548" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:24:59.835050" elapsed="0.000534"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:59.836020" elapsed="0.000032"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:59.836426" elapsed="0.000031"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given `key_value_pairs` and/or `items` to the `dictionary`.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:59.836635" elapsed="0.000019"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-10-20T23:24:59.835835" elapsed="0.000852"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-10-20T23:24:59.835650" elapsed="0.001080"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-20T23:24:59.836774" elapsed="0.000029"/>
</return>
<msg time="2026-10-20T23:24:59.836952" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-20T23:24:59.833765" elapsed="0.003237"/>
</kw>
<status status="PASS" start="2026-10-20T23:24:59.833022" elapsed="0.004019"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:59.837415" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:24:59.837100" elapsed="0.000393"/>
</branch>
<status status="PASS" start="2026-10-20T23:24:59.832914" elapsed="0.004635"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:24:59.839377" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-10-20T23:24:59.838637" elapsed="0.000855"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:24:59.839602" elapsed="0.000063"/>
</return>
<arg>folder=${folder}</arg>
<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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-10-20T23:24:59.816068" elapsed="0.023818"/>
</kw>
<msg time="2026-10-20T23:24:59.840160" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:24:59.806003" elapsed="0.034209"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:59.846798" 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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:59.851016" 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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:59.855268" elapsed="0.000032"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:59.855584" 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-10-20T23:24:59.855793" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:59.856203" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:24:59.856052" elapsed="0.000327"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:24:59.856037" elapsed="0.000370"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:59.856568" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:59.856763" 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-10-20T23:24:59.856954" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-20T23:24:59.856007" elapsed="0.000999"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-20T23:24:59.855866" 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>Concatenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:59.857185" elapsed="0.000019"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-20T23:24:59.857254" elapsed="0.000015"/>
</return>
<msg time="2026-10-20T23:24:59.857385" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-10-20T23:24:59.803963" elapsed="0.053446"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:24:59.858799" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:24:59.858402" elapsed="0.000587">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-10-20T23:24:59.859272" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:24:59.858044" elapsed="0.001287"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:59.859725" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:24:59.859420" elapsed="0.000373"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:24:59.860668" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:24:59.860065" elapsed="0.000649"/>
</kw>
<status status="PASS" start="2026-10-20T23:24:59.859823" elapsed="0.000934"/>
</branch>
<status status="PASS" start="2026-10-20T23:24:59.859397" elapsed="0.001385"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:24:59.861397" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:24:59.860957" elapsed="0.000466"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-20T23:24:59.861469" elapsed="0.000028"/>
</return>
<msg time="2026-10-20T23:24:59.861598" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:24:59.857734" elapsed="0.003887"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:24:59.862965" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:24:59.862540" elapsed="0.000612">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-10-20T23:24:59.863492" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:24:59.862192" elapsed="0.001325"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-10-20T23:24:59.863723" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-10-20T23:24:59.863597" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-10-20T23:24:59.863573" elapsed="0.000230"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:59.863963" elapsed="0.000053"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the `string` using `separator` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:59.864178" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-10-20T23:24:59.864238" elapsed="0.000014"/>
</return>
<msg time="2026-10-20T23:24:59.864391" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:24:59.861889" elapsed="0.002526"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:24:59.865761" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:24:59.865510" elapsed="0.000294"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:24:59.866216" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:24:59.865995" elapsed="0.000260"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:24:59.872785" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:24:59.872896" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '405'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/ietf-yang-library:modules-state&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:24:59.873096" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:24:59.866638" elapsed="0.006881">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:24:59.866363" elapsed="0.007237">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:59.873808" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:24:59.873632" elapsed="0.000239"/>
</branch>
<status status="FAIL" start="2026-10-20T23:24:59.866298" elapsed="0.007595">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:59.874432" elapsed="0.000027"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-20T23:24:59.874570" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:24:59.874525" elapsed="0.000097"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:24:59.874509" elapsed="0.000135"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:59.874804" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-20T23:24:59.874870" elapsed="0.000014"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-10-20T23:24:59.864759" elapsed="0.010212">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:24:59.875040" elapsed="0.000014"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-10-20T23:24:59.787564" elapsed="0.087571">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-10-20T23:24:59.875457" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:24:59.875220" elapsed="0.000322"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:24:59.875203" elapsed="0.000371"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:24:59.875656" elapsed="0.000020"/>
</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-10-20T23:24:59.786119" elapsed="0.089681">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-10-20T23:24:59.780344" elapsed="0.095541">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-10-20T23:24:59.780058" elapsed="0.095901">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</for>
<arg>${member_index_list}</arg>
<status status="FAIL" start="2026-10-20T23:24:59.775660" elapsed="0.100423">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:24:59.775148" elapsed="0.101006">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<status status="FAIL" start="2026-10-20T23:24:59.775115" elapsed="0.101078">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:24:59.876585" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:24:59.876281" elapsed="0.000377"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:24:59.876259" elapsed="0.000430"/>
</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-10-20T23:24:59.773248" elapsed="0.103572">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:25:09.887517" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:25:09.886391" elapsed="0.001293"/>
</branch>
<status status="PASS" start="2026-10-20T23:25:09.886298" elapsed="0.001442"/>
</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-10-20T23:25:09.890934" 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-10-20T23:25:09.890046" elapsed="0.000949"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:25:09.892006" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:25:09.891372" elapsed="0.000689"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-20T23:25:09.892161" elapsed="0.000071"/>
</return>
<msg time="2026-10-20T23:25:09.892496" 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-10-20T23:25:09.889147" elapsed="0.003401"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:25:09.894720" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:25:09.894058" elapsed="0.000719"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-20T23:25:09.894874" elapsed="0.000060"/>
</return>
<msg time="2026-10-20T23:25:09.895152" 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-10-20T23:25:09.893278" elapsed="0.001925"/>
</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-10-20T23:25:09.930519" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:25:09.929618" elapsed="0.001075"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:25:09.933468" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:25:09.933099" elapsed="0.000469">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</status>
</kw>
<msg time="2026-10-20T23:25:09.933870" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:25:09.932373" elapsed="0.001638"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:25:09.938689" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:25:09.935694" elapsed="0.003197"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-20T23:25:09.941158" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-10-20T23:25:09.941683" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-10-20T23:25:09.940692" elapsed="0.001143"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:25:09.944187" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:25:09.943582" elapsed="0.000801"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:25:09.946398" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:25:09.946027" elapsed="0.000437"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:25:09.947182" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:25:09.946812" elapsed="0.000405"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:09.947746" elapsed="0.000030"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:09.948009" elapsed="0.000032"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given `key_value_pairs` and/or `items` to the `dictionary`.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:09.948272" elapsed="0.000027"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-10-20T23:25:09.947543" elapsed="0.000825"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-10-20T23:25:09.947288" elapsed="0.001121"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-20T23:25:09.948473" elapsed="0.000045"/>
</return>
<msg time="2026-10-20T23:25:09.948725" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-20T23:25:09.945431" elapsed="0.003366"/>
</kw>
<status status="PASS" start="2026-10-20T23:25:09.944685" elapsed="0.004171"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:09.949386" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:25:09.948942" elapsed="0.000558"/>
</branch>
<status status="PASS" start="2026-10-20T23:25:09.944532" elapsed="0.005049"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:25:09.952186" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-10-20T23:25:09.951143" elapsed="0.001225"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:25:09.952489" elapsed="0.000073"/>
</return>
<arg>folder=${folder}</arg>
<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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-10-20T23:25:09.926359" elapsed="0.026489"/>
</kw>
<msg time="2026-10-20T23:25:09.953253" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:25:09.918532" elapsed="0.034830"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:09.959551" elapsed="0.000036"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:09.965254" elapsed="0.000035"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:09.971356" elapsed="0.000043"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:09.971701" 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-10-20T23:25:09.971963" 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-10-20T23:25:09.972553" elapsed="0.000088"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:25:09.972343" elapsed="0.000452"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:25:09.972295" 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-10-20T23:25:09.973056" elapsed="0.000027"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:09.973332" 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-10-20T23:25:09.973637" elapsed="0.000032"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-20T23:25:09.972254" elapsed="0.001453"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-20T23:25:09.972063" elapsed="0.001674"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Concatenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:09.973899" elapsed="0.000018"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-20T23:25:09.973967" elapsed="0.000015"/>
</return>
<msg time="2026-10-20T23:25:09.974077" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-10-20T23:25:09.917012" elapsed="0.057089"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:25:09.975462" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:25:09.975078" elapsed="0.000557">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-10-20T23:25:09.975866" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:25:09.974747" elapsed="0.001144"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:09.976177" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:25:09.975957" elapsed="0.000273"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:25:09.976947" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:25:09.976467" elapsed="0.000505"/>
</kw>
<status status="PASS" start="2026-10-20T23:25:09.976253" elapsed="0.000752"/>
</branch>
<status status="PASS" start="2026-10-20T23:25:09.975939" elapsed="0.001086"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:25:09.977560" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:25:09.977188" elapsed="0.000397"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-20T23:25:09.977645" elapsed="0.000027"/>
</return>
<msg time="2026-10-20T23:25:09.977772" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:25:09.974429" elapsed="0.003366"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:25:09.979152" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:25:09.978766" elapsed="0.000639">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-10-20T23:25:09.979694" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:25:09.978386" elapsed="0.001334"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-10-20T23:25:09.979893" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-10-20T23:25:09.979789" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-10-20T23:25:09.979771" elapsed="0.000200"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:09.980128" elapsed="0.000054"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the `string` using `separator` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:09.980374" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-10-20T23:25:09.980439" elapsed="0.000015"/>
</return>
<msg time="2026-10-20T23:25:09.980569" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:25:09.978046" elapsed="0.002548"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:25:09.982026" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:25:09.981733" elapsed="0.000348"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:25:09.982683" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:25:09.982372" elapsed="0.000365"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:25:09.988642" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:25:09.988745" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '405'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/ietf-yang-library:modules-state&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:25:09.988929" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:25:09.983050" elapsed="0.006230">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:25:09.982815" elapsed="0.006590">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:09.989589" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:25:09.989437" elapsed="0.000229"/>
</branch>
<status status="FAIL" start="2026-10-20T23:25:09.982793" elapsed="0.006895">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:09.990186" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-20T23:25:09.990358" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:25:09.990290" elapsed="0.000114"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:25:09.990266" elapsed="0.000159"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:09.990589" elapsed="0.000037"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-20T23:25:09.990674" elapsed="0.000017"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-10-20T23:25:09.980935" elapsed="0.009866">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:25:09.990872" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-10-20T23:25:09.900147" elapsed="0.090817">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:09.991213" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:25:09.991050" elapsed="0.000230"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:25:09.991033" elapsed="0.000302"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:25:09.991418" elapsed="0.000021"/>
</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-10-20T23:25:09.898722" elapsed="0.092823">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-10-20T23:25:09.892945" elapsed="0.098696">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-10-20T23:25:09.892688" elapsed="0.099026">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</for>
<arg>${member_index_list}</arg>
<status status="FAIL" start="2026-10-20T23:25:09.888365" elapsed="0.103468">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:25:09.887853" elapsed="0.104050">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<status status="FAIL" start="2026-10-20T23:25:09.887821" elapsed="0.104121">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:25:09.992219" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:25:09.992014" elapsed="0.000257"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:25:09.991997" 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-10-20T23:25:09.885461" elapsed="0.106944">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:25:20.001061" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:25:20.000414" elapsed="0.000789"/>
</branch>
<status status="PASS" start="2026-10-20T23:25:20.000366" elapsed="0.000892"/>
</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-10-20T23:25:20.004598" 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-10-20T23:25:20.003716" elapsed="0.000945"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:25:20.005682" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:25:20.005010" elapsed="0.000730"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-20T23:25:20.005838" elapsed="0.000070"/>
</return>
<msg time="2026-10-20T23:25:20.006218" 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-10-20T23:25:20.002806" elapsed="0.003467"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:25:20.008564" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:25:20.007900" elapsed="0.000722"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-20T23:25:20.008721" elapsed="0.000059"/>
</return>
<msg time="2026-10-20T23:25:20.008995" 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-10-20T23:25:20.007107" elapsed="0.001939"/>
</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-10-20T23:25:20.045763" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:25:20.044831" elapsed="0.001080"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:25:20.048820" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:25:20.048283" elapsed="0.000640">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</status>
</kw>
<msg time="2026-10-20T23:25:20.049210" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:25:20.047566" elapsed="0.001827"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:25:20.052060" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:25:20.050970" elapsed="0.001254"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-20T23:25:20.054491" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-10-20T23:25:20.054899" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-10-20T23:25:20.054018" elapsed="0.001026"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:25:20.057295" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:25:20.056698" elapsed="0.000946"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:25:20.059753" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:25:20.059212" elapsed="0.000625"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:25:20.060491" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:25:20.060096" elapsed="0.000445"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:20.060959" elapsed="0.000030"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:20.061224" elapsed="0.000032"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given `key_value_pairs` and/or `items` to the `dictionary`.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:20.061553" elapsed="0.000031"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-10-20T23:25:20.060771" elapsed="0.000862"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-10-20T23:25:20.060609" elapsed="0.001065"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-20T23:25:20.061733" elapsed="0.000039"/>
</return>
<msg time="2026-10-20T23:25:20.061976" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-20T23:25:20.058588" elapsed="0.003464"/>
</kw>
<status status="PASS" start="2026-10-20T23:25:20.057894" elapsed="0.004217"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:20.062653" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:25:20.062196" elapsed="0.000570"/>
</branch>
<status status="PASS" start="2026-10-20T23:25:20.057787" elapsed="0.005059"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:25:20.065156" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-10-20T23:25:20.064379" elapsed="0.000910"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:25:20.065406" elapsed="0.000056"/>
</return>
<arg>folder=${folder}</arg>
<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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-10-20T23:25:20.041486" elapsed="0.024188"/>
</kw>
<msg time="2026-10-20T23:25:20.065981" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:25:20.032171" elapsed="0.033871"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:20.070618" 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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:20.074820" 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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:20.078904" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:20.079131" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:20.079361" 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-10-20T23:25:20.079818" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:25:20.079649" elapsed="0.000356"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:25:20.079628" elapsed="0.000411"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:20.080245" elapsed="0.000027"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:20.080517" 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-10-20T23:25:20.080759" elapsed="0.000025"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-20T23:25:20.079595" elapsed="0.001228"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-20T23:25:20.079439" elapsed="0.001418"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Concatenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:20.081027" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-20T23:25:20.081098" elapsed="0.000015"/>
</return>
<msg time="2026-10-20T23:25:20.081211" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-10-20T23:25:20.030775" elapsed="0.050460"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:25:20.082626" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:25:20.082231" elapsed="0.000561">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-10-20T23:25:20.083028" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:25:20.081896" elapsed="0.001158"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:20.083376" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:25:20.083121" elapsed="0.000310"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:25:20.084147" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:25:20.083666" elapsed="0.000506"/>
</kw>
<status status="PASS" start="2026-10-20T23:25:20.083455" elapsed="0.000750"/>
</branch>
<status status="PASS" start="2026-10-20T23:25:20.083103" elapsed="0.001123"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:25:20.084818" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:25:20.084432" elapsed="0.000412"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-20T23:25:20.084890" elapsed="0.000029"/>
</return>
<msg time="2026-10-20T23:25:20.085020" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:25:20.081585" elapsed="0.003459"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:25:20.086406" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:25:20.086024" elapsed="0.000556">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-10-20T23:25:20.086830" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:25:20.085669" elapsed="0.001192"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-10-20T23:25:20.087036" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-10-20T23:25:20.086931" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-10-20T23:25:20.086913" elapsed="0.000205"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:20.087275" elapsed="0.000114"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the `string` using `separator` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:20.087572" elapsed="0.000022"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-10-20T23:25:20.087637" elapsed="0.000016"/>
</return>
<msg time="2026-10-20T23:25:20.087769" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:25:20.085298" elapsed="0.002495"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:25:20.089103" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:25:20.088873" elapsed="0.000275"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:25:20.089601" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:25:20.089360" 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-10-20T23:25:20.096023" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:25:20.096149" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '405'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/ietf-yang-library:modules-state&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:25:20.096400" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:25:20.089938" elapsed="0.006869">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:25:20.089706" elapsed="0.007194">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:20.097162" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:25:20.096961" elapsed="0.000267"/>
</branch>
<status status="FAIL" start="2026-10-20T23:25:20.089688" elapsed="0.007564">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:20.097877" elapsed="0.000029"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-20T23:25:20.098043" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:25:20.097982" elapsed="0.000124"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:25:20.097963" elapsed="0.000166"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:20.098281" elapsed="0.000047"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-20T23:25:20.098400" elapsed="0.000018"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-10-20T23:25:20.088114" elapsed="0.010401">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:25:20.098602" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-10-20T23:25:20.014113" elapsed="0.084584">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:20.098961" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:25:20.098790" elapsed="0.000241"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:25:20.098771" elapsed="0.000283"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:25:20.099153" elapsed="0.000022"/>
</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-10-20T23:25:20.012628" elapsed="0.086641">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-10-20T23:25:20.006766" elapsed="0.092623">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-10-20T23:25:20.006440" elapsed="0.093018">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</for>
<arg>${member_index_list}</arg>
<status status="FAIL" start="2026-10-20T23:25:20.001919" elapsed="0.097651">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:25:20.001409" elapsed="0.098215">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<status status="FAIL" start="2026-10-20T23:25:20.001374" elapsed="0.098285">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:25:20.099935" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:25:20.099725" elapsed="0.000263"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:25:20.099708" elapsed="0.000303"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-10-20T23:25:19.999546" elapsed="0.100544">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:25:30.108584" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:25:30.107920" elapsed="0.000809"/>
</branch>
<status status="PASS" start="2026-10-20T23:25:30.107875" elapsed="0.000907"/>
</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-10-20T23:25:30.111939" 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-10-20T23:25:30.111067" elapsed="0.000932"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:25:30.113002" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:25:30.112375" elapsed="0.000682"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-20T23:25:30.113153" elapsed="0.000068"/>
</return>
<msg time="2026-10-20T23:25:30.113505" 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-10-20T23:25:30.110180" elapsed="0.003378"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:25:30.115703" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:25:30.115035" elapsed="0.000726"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-20T23:25:30.115856" elapsed="0.000059"/>
</return>
<msg time="2026-10-20T23:25:30.116130" 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-10-20T23:25:30.114257" elapsed="0.001926"/>
</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-10-20T23:25:30.151254" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:25:30.150429" elapsed="0.001078"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:25:30.154116" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:25:30.153834" elapsed="0.000377">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</status>
</kw>
<msg time="2026-10-20T23:25:30.154593" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:25:30.153111" elapsed="0.001624"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:25:30.157253" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:25:30.156226" elapsed="0.001194"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-20T23:25:30.159440" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-10-20T23:25:30.159829" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-10-20T23:25:30.158991" elapsed="0.000979"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:25:30.162121" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:25:30.161573" elapsed="0.000710"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:25:30.164149" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:25:30.163817" elapsed="0.000390"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:25:30.164941" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:25:30.164581" elapsed="0.000402"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:30.165407" elapsed="0.000030"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:30.165680" elapsed="0.000031"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given `key_value_pairs` and/or `items` to the `dictionary`.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:30.165951" elapsed="0.000027"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-10-20T23:25:30.165205" elapsed="0.000819"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-10-20T23:25:30.165049" elapsed="0.001014"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-20T23:25:30.166118" elapsed="0.000037"/>
</return>
<msg time="2026-10-20T23:25:30.166386" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-20T23:25:30.163233" elapsed="0.003235"/>
</kw>
<status status="PASS" start="2026-10-20T23:25:30.162645" elapsed="0.003880"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:30.167006" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:25:30.166607" elapsed="0.000505"/>
</branch>
<status status="PASS" start="2026-10-20T23:25:30.162544" elapsed="0.004643"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:25:30.169711" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-10-20T23:25:30.168704" elapsed="0.001147"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:25:30.169987" elapsed="0.000090"/>
</return>
<arg>folder=${folder}</arg>
<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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-10-20T23:25:30.147256" elapsed="0.023132"/>
</kw>
<msg time="2026-10-20T23:25:30.170686" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:25:30.138552" elapsed="0.032186"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:30.175011" elapsed="0.000025"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:30.179007" elapsed="0.000024"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:30.183048" elapsed="0.000025"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:30.183263" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:30.183481" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:30.183879" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:25:30.183732" elapsed="0.000324"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:25:30.183717" 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-10-20T23:25:30.184243" elapsed="0.000019"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:30.184445" elapsed="0.000032"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:30.184627" elapsed="0.000019"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-20T23:25:30.183688" elapsed="0.000987"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-20T23:25:30.183554" elapsed="0.001145"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Concatenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:30.184852" elapsed="0.000018"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-20T23:25:30.184919" elapsed="0.000014"/>
</return>
<msg time="2026-10-20T23:25:30.185024" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-10-20T23:25:30.137111" elapsed="0.047936"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:25:30.186378" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:25:30.186016" elapsed="0.000532">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-10-20T23:25:30.186774" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:25:30.185690" elapsed="0.001109"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:30.187089" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:25:30.186863" elapsed="0.000278"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:25:30.187902" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:25:30.187379" elapsed="0.000548"/>
</kw>
<status status="PASS" start="2026-10-20T23:25:30.187164" elapsed="0.000798"/>
</branch>
<status status="PASS" start="2026-10-20T23:25:30.186846" elapsed="0.001140"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:25:30.188535" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:25:30.188150" elapsed="0.000410"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-20T23:25:30.188605" elapsed="0.000027"/>
</return>
<msg time="2026-10-20T23:25:30.188729" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:25:30.185366" elapsed="0.003386"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:25:30.190013" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:25:30.189665" elapsed="0.000500">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-10-20T23:25:30.190411" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:25:30.189298" elapsed="0.001138"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-10-20T23:25:30.190614" elapsed="0.000024"/>
</return>
<status status="PASS" start="2026-10-20T23:25:30.190513" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-10-20T23:25:30.190495" elapsed="0.000195"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:30.190843" elapsed="0.000051"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the `string` using `separator` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:30.191053" elapsed="0.000019"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-10-20T23:25:30.191113" elapsed="0.000015"/>
</return>
<msg time="2026-10-20T23:25:30.191238" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:25:30.189000" elapsed="0.002262"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:25:30.192668" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:25:30.192421" elapsed="0.000290"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:25:30.193115" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:25:30.192900" elapsed="0.000255"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:25:30.199811" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:25:30.199915" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '405'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/ietf-yang-library:modules-state&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:25:30.200105" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:25:30.193472" elapsed="0.007055">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:25:30.193214" elapsed="0.007391">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:30.200787" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:25:30.200636" elapsed="0.000209"/>
</branch>
<status status="FAIL" start="2026-10-20T23:25:30.193197" elapsed="0.007670">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:30.201375" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-20T23:25:30.201511" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:25:30.201477" elapsed="0.000073"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:25:30.201449" elapsed="0.000121"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:30.201708" elapsed="0.000020"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-20T23:25:30.201771" elapsed="0.000013"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-10-20T23:25:30.191639" elapsed="0.010229">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:25:30.201934" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-10-20T23:25:30.121062" elapsed="0.080965">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:30.202269" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:25:30.202110" elapsed="0.000250"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:25:30.202094" elapsed="0.000289"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:25:30.202452" 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="FAIL" start="2026-10-20T23:25:30.119644" elapsed="0.082915">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-10-20T23:25:30.113924" elapsed="0.088694">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-10-20T23:25:30.113671" elapsed="0.089000">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</for>
<arg>${member_index_list}</arg>
<status status="FAIL" start="2026-10-20T23:25:30.109401" elapsed="0.093355">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:25:30.108896" elapsed="0.093908">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<status status="FAIL" start="2026-10-20T23:25:30.108864" elapsed="0.093968">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:25:30.203093" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:25:30.202893" elapsed="0.000252"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:25:30.202878" elapsed="0.000289"/>
</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-10-20T23:25:30.107027" elapsed="0.096213">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:25:40.211716" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:25:40.211034" elapsed="0.000823"/>
</branch>
<status status="PASS" start="2026-10-20T23:25:40.210987" elapsed="0.000925"/>
</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-10-20T23:25:40.215108" 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-10-20T23:25:40.214248" elapsed="0.000918"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:25:40.216226" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:25:40.215609" elapsed="0.000673"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-20T23:25:40.216436" elapsed="0.000072"/>
</return>
<msg time="2026-10-20T23:25:40.216742" 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-10-20T23:25:40.213355" elapsed="0.003440"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:25:40.218939" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:25:40.218275" elapsed="0.000721"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-20T23:25:40.219090" elapsed="0.000059"/>
</return>
<msg time="2026-10-20T23:25:40.219396" 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-10-20T23:25:40.217544" elapsed="0.001938"/>
</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-10-20T23:25:40.256060" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:25:40.255184" elapsed="0.001023"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:25:40.258753" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:25:40.258465" elapsed="0.000383">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</status>
</kw>
<msg time="2026-10-20T23:25:40.259128" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:25:40.257733" elapsed="0.001532"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:25:40.262107" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:25:40.260960" elapsed="0.001290"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-20T23:25:40.264302" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-10-20T23:25:40.264850" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-10-20T23:25:40.263863" elapsed="0.001125"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:25:40.267375" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:25:40.266755" elapsed="0.000874"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:25:40.269767" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:25:40.269209" elapsed="0.000617"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:25:40.270492" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:25:40.270071" elapsed="0.000461"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:40.270928" elapsed="0.000028"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:40.271181" elapsed="0.000031"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given `key_value_pairs` and/or `items` to the `dictionary`.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:40.271493" elapsed="0.000029"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-10-20T23:25:40.270749" elapsed="0.000819"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-10-20T23:25:40.270594" elapsed="0.001013"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-20T23:25:40.271663" elapsed="0.000038"/>
</return>
<msg time="2026-10-20T23:25:40.271880" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-20T23:25:40.268666" elapsed="0.003281"/>
</kw>
<status status="PASS" start="2026-10-20T23:25:40.267865" elapsed="0.004135"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:40.272664" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:25:40.272082" elapsed="0.000689"/>
</branch>
<status status="PASS" start="2026-10-20T23:25:40.267764" elapsed="0.005084"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:25:40.275349" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-10-20T23:25:40.274331" elapsed="0.001187"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:25:40.275633" elapsed="0.000073"/>
</return>
<arg>folder=${folder}</arg>
<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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-10-20T23:25:40.251990" elapsed="0.023965"/>
</kw>
<msg time="2026-10-20T23:25:40.276396" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:25:40.242010" elapsed="0.034476"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:40.282348" 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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:40.286480" 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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:40.290545" elapsed="0.000025"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:40.290765" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:40.290952" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:40.291377" elapsed="0.000065"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:25:40.291202" elapsed="0.000351"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:25:40.291188" elapsed="0.000391"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:40.291740" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:40.291922" 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-10-20T23:25:40.292089" elapsed="0.000019"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-20T23:25:40.291159" elapsed="0.000978"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-20T23:25:40.291022" elapsed="0.001141"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Concatenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:40.292335" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-20T23:25:40.292418" elapsed="0.000016"/>
</return>
<msg time="2026-10-20T23:25:40.292528" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-10-20T23:25:40.240632" elapsed="0.051920"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:25:40.293876" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:25:40.293523" elapsed="0.000512">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-10-20T23:25:40.294264" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:25:40.293160" elapsed="0.001130"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:40.294616" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:25:40.294372" elapsed="0.000298"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:25:40.295378" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:25:40.294881" elapsed="0.000537"/>
</kw>
<status status="PASS" start="2026-10-20T23:25:40.294693" elapsed="0.000759"/>
</branch>
<status status="PASS" start="2026-10-20T23:25:40.294354" elapsed="0.001119"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:25:40.295985" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:25:40.295637" elapsed="0.000373"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-20T23:25:40.296056" elapsed="0.000027"/>
</return>
<msg time="2026-10-20T23:25:40.296181" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:25:40.292853" elapsed="0.003350"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:25:40.297482" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:25:40.297105" elapsed="0.000529">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-10-20T23:25:40.297859" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:25:40.296789" elapsed="0.001094"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-10-20T23:25:40.298048" elapsed="0.000024"/>
</return>
<status status="PASS" start="2026-10-20T23:25:40.297949" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-10-20T23:25:40.297931" elapsed="0.000194"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:40.298282" elapsed="0.000064"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the `string` using `separator` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:40.298521" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-10-20T23:25:40.298582" elapsed="0.000014"/>
</return>
<msg time="2026-10-20T23:25:40.298708" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:25:40.296488" elapsed="0.002243"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:25:40.300012" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:25:40.299788" elapsed="0.000266"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:25:40.300556" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:25:40.300241" 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-10-20T23:25:40.307478" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:25:40.307582" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '405'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/ietf-yang-library:modules-state&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:25:40.307774" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:25:40.300882" elapsed="0.007242">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:25:40.300658" elapsed="0.007544">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:40.308427" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:25:40.308232" elapsed="0.000257"/>
</branch>
<status status="FAIL" start="2026-10-20T23:25:40.300641" elapsed="0.007870">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:40.309000" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-20T23:25:40.309124" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:25:40.309090" elapsed="0.000073"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:25:40.309074" elapsed="0.000110"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:40.309340" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-20T23:25:40.309426" 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-10-20T23:25:40.299039" elapsed="0.010490">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:25:40.309595" elapsed="0.000014"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-10-20T23:25:40.224443" elapsed="0.085240">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:40.309922" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:25:40.309765" elapsed="0.000222"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:25:40.309749" elapsed="0.000260"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:25:40.310070" elapsed="0.000015"/>
</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-10-20T23:25:40.222882" elapsed="0.087280">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-10-20T23:25:40.217157" elapsed="0.093064">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-10-20T23:25:40.216907" elapsed="0.093365">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</for>
<arg>${member_index_list}</arg>
<status status="FAIL" start="2026-10-20T23:25:40.212560" elapsed="0.097811">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:25:40.212025" elapsed="0.098410">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<status status="FAIL" start="2026-10-20T23:25:40.211992" elapsed="0.098472">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:25:40.310727" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:25:40.310526" elapsed="0.000253"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:25:40.310510" elapsed="0.000292"/>
</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-10-20T23:25:40.210130" elapsed="0.100743">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:25:50.319428" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:25:50.318773" elapsed="0.000797"/>
</branch>
<status status="PASS" start="2026-10-20T23:25:50.318729" elapsed="0.000895"/>
</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-10-20T23:25:50.322811" 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-10-20T23:25:50.321906" elapsed="0.000964"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:25:50.323874" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:25:50.323212" elapsed="0.000717"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-20T23:25:50.324024" elapsed="0.000069"/>
</return>
<msg time="2026-10-20T23:25:50.324353" 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-10-20T23:25:50.321015" elapsed="0.003413"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:25:50.326563" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:25:50.325912" elapsed="0.000707"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-20T23:25:50.326711" elapsed="0.000060"/>
</return>
<msg time="2026-10-20T23:25:50.326983" 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-10-20T23:25:50.325130" elapsed="0.001904"/>
</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-10-20T23:25:50.367021" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:25:50.365427" elapsed="0.001875"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:25:50.371517" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:25:50.370942" elapsed="0.000746">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</status>
</kw>
<msg time="2026-10-20T23:25:50.371990" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:25:50.369783" elapsed="0.002346"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:25:50.374748" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:25:50.373782" elapsed="0.001108"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-20T23:25:50.376872" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-10-20T23:25:50.377244" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-10-20T23:25:50.376446" elapsed="0.001055"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:25:50.379677" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:25:50.378992" elapsed="0.000846"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:25:50.381713" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:25:50.381239" elapsed="0.000531"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:25:50.382403" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:25:50.382016" elapsed="0.000421"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:50.382840" elapsed="0.000028"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:50.383094" elapsed="0.000031"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given `key_value_pairs` and/or `items` to the `dictionary`.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:50.383442" elapsed="0.000030"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-10-20T23:25:50.382658" elapsed="0.000863"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-10-20T23:25:50.382499" elapsed="0.001061"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-20T23:25:50.383617" elapsed="0.000038"/>
</return>
<msg time="2026-10-20T23:25:50.383835" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-20T23:25:50.380693" elapsed="0.003209"/>
</kw>
<status status="PASS" start="2026-10-20T23:25:50.380073" elapsed="0.003884"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:50.384470" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:25:50.384037" elapsed="0.000541"/>
</branch>
<status status="PASS" start="2026-10-20T23:25:50.379970" elapsed="0.004683"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:25:50.387165" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-10-20T23:25:50.386159" elapsed="0.001183"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:25:50.387476" elapsed="0.000074"/>
</return>
<arg>folder=${folder}</arg>
<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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-10-20T23:25:50.360183" elapsed="0.027617"/>
</kw>
<msg time="2026-10-20T23:25:50.388190" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:25:50.349533" elapsed="0.038728"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:50.394490" elapsed="0.000036"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:50.399435" elapsed="0.000025"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:50.403517" elapsed="0.000025"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:50.403740" elapsed="0.000020"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:50.403923" elapsed="0.000019"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:50.404342" elapsed="0.000060"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:25:50.404176" elapsed="0.000336"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:25:50.404161" 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-10-20T23:25:50.404717" 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-10-20T23:25:50.404900" 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-10-20T23:25:50.405064" elapsed="0.000018"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-20T23:25:50.404132" elapsed="0.000979"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-20T23:25:50.403996" elapsed="0.001140"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Concatenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:50.405287" elapsed="0.000049"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-20T23:25:50.405403" elapsed="0.000017"/>
</return>
<msg time="2026-10-20T23:25:50.405516" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-10-20T23:25:50.348102" elapsed="0.057439"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:25:50.406893" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:25:50.406532" elapsed="0.000520">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-10-20T23:25:50.407281" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:25:50.406159" elapsed="0.001165"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:50.407641" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:25:50.407404" elapsed="0.000290"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:25:50.408412" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:25:50.407909" elapsed="0.000528"/>
</kw>
<status status="PASS" start="2026-10-20T23:25:50.407717" elapsed="0.000753"/>
</branch>
<status status="PASS" start="2026-10-20T23:25:50.407386" elapsed="0.001104"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:25:50.409000" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:25:50.408652" elapsed="0.000373"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-20T23:25:50.409177" elapsed="0.000031"/>
</return>
<msg time="2026-10-20T23:25:50.409337" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:25:50.405850" elapsed="0.003525"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:25:50.410649" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:25:50.410264" elapsed="0.000539">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-10-20T23:25:50.411035" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:25:50.409936" elapsed="0.001123"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-10-20T23:25:50.411227" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-10-20T23:25:50.411126" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-10-20T23:25:50.411108" elapsed="0.000271"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:50.411540" elapsed="0.000060"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the `string` using `separator` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:50.411762" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-10-20T23:25:50.411823" elapsed="0.000015"/>
</return>
<msg time="2026-10-20T23:25:50.411952" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:25:50.409632" elapsed="0.002344"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:25:50.413272" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:25:50.413044" elapsed="0.000331"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:25:50.413789" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:25:50.413568" elapsed="0.000262"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:25:50.419188" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:25:50.419290" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '405'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/ietf-yang-library:modules-state&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:25:50.419508" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:25:50.414118" elapsed="0.005764">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:25:50.413890" elapsed="0.006069">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:50.420141" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:25:50.419990" elapsed="0.000211"/>
</branch>
<status status="FAIL" start="2026-10-20T23:25:50.413873" elapsed="0.006350">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:50.420764" elapsed="0.000026"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-20T23:25:50.420891" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:25:50.420857" elapsed="0.000074"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:25:50.420841" elapsed="0.000111"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:50.421092" elapsed="0.000020"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-20T23:25:50.421157" elapsed="0.000014"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-10-20T23:25:50.412288" elapsed="0.008970">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:25:50.421349" elapsed="0.000028"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-10-20T23:25:50.331912" elapsed="0.089545">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-10-20T23:25:50.421705" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:25:50.421543" elapsed="0.000229"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:25:50.421527" elapsed="0.000268"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:25:50.421859" elapsed="0.000015"/>
</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-10-20T23:25:50.330509" elapsed="0.091446">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-10-20T23:25:50.324795" elapsed="0.097221">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-10-20T23:25:50.324542" elapsed="0.097527">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</for>
<arg>${member_index_list}</arg>
<status status="FAIL" start="2026-10-20T23:25:50.320208" elapsed="0.101948">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:25:50.319738" elapsed="0.102467">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<status status="FAIL" start="2026-10-20T23:25:50.319705" elapsed="0.102528">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:25:50.422534" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:25:50.422296" elapsed="0.000292"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:25:50.422280" elapsed="0.000330"/>
</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-10-20T23:25:50.317911" elapsed="0.104773">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:26:00.426959" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:26:00.426657" elapsed="0.000372"/>
</branch>
<status status="PASS" start="2026-10-20T23:26:00.426633" elapsed="0.000422"/>
</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-10-20T23:26:00.428568" 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-10-20T23:26:00.428133" elapsed="0.000463"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:26:00.429038" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:26:00.428755" elapsed="0.000308"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-20T23:26:00.429108" elapsed="0.000035"/>
</return>
<msg time="2026-10-20T23:26:00.429251" 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-10-20T23:26:00.427721" elapsed="0.001555"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:26:00.430250" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:26:00.429971" elapsed="0.000306"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-20T23:26:00.430347" elapsed="0.000029"/>
</return>
<msg time="2026-10-20T23:26:00.430478" 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-10-20T23:26:00.429638" elapsed="0.000865"/>
</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-10-20T23:26:00.451863" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:26:00.451235" elapsed="0.000732"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:26:00.453831" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:26:00.453579" elapsed="0.000330">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</status>
</kw>
<msg time="2026-10-20T23:26:00.454112" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:26:00.453049" elapsed="0.001163"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:26:00.456194" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:26:00.455274" elapsed="0.001020"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-20T23:26:00.457743" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-10-20T23:26:00.458021" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-10-20T23:26:00.457435" elapsed="0.000686"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:26:00.459710" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:26:00.459193" elapsed="0.000634"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:26:00.461085" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:26:00.460846" elapsed="0.000280"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:26:00.461688" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:26:00.461303" elapsed="0.000410"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:00.462005" 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-10-20T23:26:00.462188" elapsed="0.000022"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given `key_value_pairs` and/or `items` to the `dictionary`.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:00.462401" elapsed="0.000020"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-10-20T23:26:00.461875" elapsed="0.000579"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-10-20T23:26:00.461759" elapsed="0.000724"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-20T23:26:00.462525" elapsed="0.000027"/>
</return>
<msg time="2026-10-20T23:26:00.462682" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-20T23:26:00.460455" elapsed="0.002275"/>
</kw>
<status status="PASS" start="2026-10-20T23:26:00.459996" elapsed="0.002773"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:00.463106" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:26:00.462827" elapsed="0.000354"/>
</branch>
<status status="PASS" start="2026-10-20T23:26:00.459922" elapsed="0.003314"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:26:00.465073" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-10-20T23:26:00.464377" elapsed="0.000797"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:26:00.465257" elapsed="0.000104"/>
</return>
<arg>folder=${folder}</arg>
<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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-10-20T23:26:00.448783" elapsed="0.016763"/>
</kw>
<msg time="2026-10-20T23:26:00.465826" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:26:00.442480" elapsed="0.023397"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:00.470143" elapsed="0.000025"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:00.474159" elapsed="0.000025"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:00.478563" elapsed="0.000026"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:00.478784" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:00.478969" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:00.479403" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:26:00.479222" elapsed="0.000344"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:26:00.479208" elapsed="0.000385"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:00.479753" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:00.479939" 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-10-20T23:26:00.480104" elapsed="0.000019"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-20T23:26:00.479179" elapsed="0.000975"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-20T23:26:00.479040" elapsed="0.001138"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Concatenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:00.480365" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-20T23:26:00.480437" elapsed="0.000015"/>
</return>
<msg time="2026-10-20T23:26:00.480546" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-10-20T23:26:00.441731" elapsed="0.038840"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:26:00.481900" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:26:00.481547" elapsed="0.000508">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-10-20T23:26:00.482285" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:26:00.481181" elapsed="0.001148"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:00.482633" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:26:00.482413" elapsed="0.000274"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:26:00.483404" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:26:00.482898" elapsed="0.000531"/>
</kw>
<status status="PASS" start="2026-10-20T23:26:00.482710" elapsed="0.000752"/>
</branch>
<status status="PASS" start="2026-10-20T23:26:00.482395" elapsed="0.001087"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:26:00.483985" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:26:00.483643" elapsed="0.000367"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-20T23:26:00.484055" elapsed="0.000027"/>
</return>
<msg time="2026-10-20T23:26:00.484181" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:26:00.480877" elapsed="0.003327"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:26:00.485529" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:26:00.485148" elapsed="0.000536">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-10-20T23:26:00.485915" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:26:00.484829" elapsed="0.001111"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-10-20T23:26:00.486107" elapsed="0.000024"/>
</return>
<status status="PASS" start="2026-10-20T23:26:00.486006" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-10-20T23:26:00.485989" elapsed="0.000197"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:00.486375" elapsed="0.000051"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the `string` using `separator` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:00.486589" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-10-20T23:26:00.486651" elapsed="0.000015"/>
</return>
<msg time="2026-10-20T23:26:00.486780" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:26:00.484526" elapsed="0.002278"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:26:00.488128" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:26:00.487903" elapsed="0.000268"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:26:00.488650" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:26:00.488426" elapsed="0.000265"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:26:00.494068" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:26:00.494172" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '405'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/ietf-yang-library:modules-state&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:26:00.494391" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:26:00.488979" elapsed="0.005760">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:26:00.488751" elapsed="0.006063">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:00.495000" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:26:00.494845" elapsed="0.000213"/>
</branch>
<status status="FAIL" start="2026-10-20T23:26:00.488734" elapsed="0.006346">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:00.495656" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-20T23:26:00.495781" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:26:00.495747" elapsed="0.000074"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:26:00.495731" elapsed="0.000111"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:00.495981" elapsed="0.000020"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-20T23:26:00.496045" elapsed="0.000013"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-10-20T23:26:00.487120" elapsed="0.009024">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:26:00.496211" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-10-20T23:26:00.433017" elapsed="0.063284">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:00.496584" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:26:00.496424" elapsed="0.000226"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:26:00.496407" elapsed="0.000266"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:26:00.496734" elapsed="0.000016"/>
</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-10-20T23:26:00.432090" elapsed="0.064742">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-10-20T23:26:00.429483" elapsed="0.067410">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-10-20T23:26:00.429359" elapsed="0.067587">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</for>
<arg>${member_index_list}</arg>
<status status="FAIL" start="2026-10-20T23:26:00.427364" elapsed="0.069669">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:26:00.427108" elapsed="0.069976">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<status status="FAIL" start="2026-10-20T23:26:00.427093" elapsed="0.070020">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:26:00.497429" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:26:00.497177" elapsed="0.000306"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:26:00.497161" elapsed="0.000344"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-10-20T23:26:00.426168" elapsed="0.071412">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:26:10.506882" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:26:10.506175" elapsed="0.000854"/>
</branch>
<status status="PASS" start="2026-10-20T23:26:10.506127" elapsed="0.000962"/>
</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-10-20T23:26:10.510480" 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-10-20T23:26:10.509573" elapsed="0.000972"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:26:10.511613" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:26:10.510915" elapsed="0.000758"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-20T23:26:10.511776" elapsed="0.000073"/>
</return>
<msg time="2026-10-20T23:26:10.512092" 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-10-20T23:26:10.508631" elapsed="0.003516"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:26:10.514484" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:26:10.513775" elapsed="0.000771"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-20T23:26:10.514649" elapsed="0.000064"/>
</return>
<msg time="2026-10-20T23:26:10.514946" 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-10-20T23:26:10.512947" elapsed="0.002055"/>
</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-10-20T23:26:10.553742" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:26:10.552875" elapsed="0.001010"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:26:10.556625" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:26:10.556266" elapsed="0.000456">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</status>
</kw>
<msg time="2026-10-20T23:26:10.557002" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:26:10.555586" elapsed="0.001557"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:26:10.559743" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:26:10.558722" elapsed="0.001164"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-20T23:26:10.561896" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-10-20T23:26:10.562289" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-10-20T23:26:10.561469" elapsed="0.001005"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:26:10.564767" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:26:10.564026" elapsed="0.000903"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:26:10.566766" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:26:10.566420" elapsed="0.000404"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:26:10.567464" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:26:10.567069" elapsed="0.000429"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:10.567894" elapsed="0.000028"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:10.568152" elapsed="0.000031"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given `key_value_pairs` and/or `items` to the `dictionary`.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:10.568455" elapsed="0.000029"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-10-20T23:26:10.567715" elapsed="0.000815"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-10-20T23:26:10.567560" elapsed="0.001010"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-20T23:26:10.568626" elapsed="0.000037"/>
</return>
<msg time="2026-10-20T23:26:10.568841" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-20T23:26:10.565788" elapsed="0.003121"/>
</kw>
<status status="PASS" start="2026-10-20T23:26:10.565165" elapsed="0.003798"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:10.569531" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:26:10.569046" elapsed="0.000592"/>
</branch>
<status status="PASS" start="2026-10-20T23:26:10.565063" elapsed="0.004653"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:26:10.572198" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-10-20T23:26:10.571186" elapsed="0.001195"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:26:10.572501" elapsed="0.000073"/>
</return>
<arg>folder=${folder}</arg>
<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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-10-20T23:26:10.549741" elapsed="0.023081"/>
</kw>
<msg time="2026-10-20T23:26:10.573210" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:26:10.539146" elapsed="0.034134"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:10.577874" elapsed="0.000025"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:10.581909" elapsed="0.000024"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:10.585942" elapsed="0.000024"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:10.586156" elapsed="0.000020"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:10.586364" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:10.586763" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:26:10.586614" elapsed="0.000305"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:26:10.586600" elapsed="0.000343"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:10.587103" elapsed="0.000019"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:10.587283" 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-10-20T23:26:10.587482" elapsed="0.000019"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-20T23:26:10.586572" elapsed="0.000959"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-20T23:26:10.586436" elapsed="0.001119"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Concatenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:10.587706" elapsed="0.000018"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-20T23:26:10.587774" elapsed="0.000015"/>
</return>
<msg time="2026-10-20T23:26:10.587879" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-10-20T23:26:10.537655" elapsed="0.050248"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:26:10.589211" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:26:10.588863" elapsed="0.000536">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-10-20T23:26:10.589627" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:26:10.588538" elapsed="0.001114"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:10.589937" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:26:10.589717" elapsed="0.000272"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:26:10.590697" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:26:10.590202" elapsed="0.000519"/>
</kw>
<status status="PASS" start="2026-10-20T23:26:10.590012" elapsed="0.000741"/>
</branch>
<status status="PASS" start="2026-10-20T23:26:10.589700" elapsed="0.001073"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:26:10.591272" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:26:10.590934" elapsed="0.000362"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-20T23:26:10.591376" elapsed="0.000028"/>
</return>
<msg time="2026-10-20T23:26:10.591503" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:26:10.588205" elapsed="0.003320"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:26:10.592776" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:26:10.592435" elapsed="0.000493">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-10-20T23:26:10.593155" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:26:10.592075" elapsed="0.001103"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-10-20T23:26:10.593377" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-10-20T23:26:10.593244" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-10-20T23:26:10.593226" elapsed="0.000229"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:10.593608" elapsed="0.000053"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the `string` using `separator` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:10.593821" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-10-20T23:26:10.593882" elapsed="0.000014"/>
</return>
<msg time="2026-10-20T23:26:10.594007" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:26:10.591776" elapsed="0.002254"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:26:10.595346" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:26:10.595091" elapsed="0.000300"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:26:10.595798" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:26:10.595580" elapsed="0.000258"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:26:10.601402" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:26:10.601505" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '405'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/ietf-yang-library:modules-state&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:26:10.601689" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:26:10.596124" elapsed="0.005913">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:26:10.595898" elapsed="0.006215">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:10.602300" elapsed="0.000085"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:26:10.602144" elapsed="0.000281"/>
</branch>
<status status="FAIL" start="2026-10-20T23:26:10.595881" elapsed="0.006567">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:10.602946" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-20T23:26:10.603070" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:26:10.603036" elapsed="0.000074"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:26:10.603019" elapsed="0.000111"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:10.603270" elapsed="0.000020"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-20T23:26:10.603375" 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-10-20T23:26:10.594386" elapsed="0.009091">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:26:10.603544" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-10-20T23:26:10.520230" elapsed="0.083403">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:10.603874" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:26:10.603716" elapsed="0.000223"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:26:10.603701" elapsed="0.000260"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:26:10.604023" elapsed="0.000016"/>
</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-10-20T23:26:10.518726" elapsed="0.085393">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-10-20T23:26:10.512594" elapsed="0.091585">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-10-20T23:26:10.512267" elapsed="0.091964">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</for>
<arg>${member_index_list}</arg>
<status status="FAIL" start="2026-10-20T23:26:10.507770" elapsed="0.096583">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:26:10.507211" elapsed="0.097195">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<status status="FAIL" start="2026-10-20T23:26:10.507176" elapsed="0.097259">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:26:10.604693" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:26:10.604496" elapsed="0.000249"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:26:10.604481" elapsed="0.000286"/>
</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-10-20T23:26:10.505222" elapsed="0.099616">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:26:20.613739" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:26:20.613043" elapsed="0.000865"/>
</branch>
<status status="PASS" start="2026-10-20T23:26:20.612979" elapsed="0.000984"/>
</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-10-20T23:26:20.617152" 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-10-20T23:26:20.616254" elapsed="0.000956"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:26:20.618228" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:26:20.617611" elapsed="0.000679"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-20T23:26:20.618437" elapsed="0.000089"/>
</return>
<msg time="2026-10-20T23:26:20.618761" 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-10-20T23:26:20.615416" elapsed="0.003397"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:26:20.620961" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:26:20.620351" elapsed="0.000691"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-20T23:26:20.621141" elapsed="0.000060"/>
</return>
<msg time="2026-10-20T23:26:20.621480" 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-10-20T23:26:20.619575" elapsed="0.001958"/>
</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-10-20T23:26:20.660295" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:26:20.659464" elapsed="0.001023"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:26:20.663228" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:26:20.662906" elapsed="0.000469">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</status>
</kw>
<msg time="2026-10-20T23:26:20.663680" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:26:20.662043" elapsed="0.001777"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:26:20.666506" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:26:20.665425" elapsed="0.001228"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-20T23:26:20.668707" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-10-20T23:26:20.669086" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-10-20T23:26:20.668129" elapsed="0.001101"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:26:20.671511" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:26:20.670904" elapsed="0.000776"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:26:20.673667" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:26:20.673277" elapsed="0.000449"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:26:20.674414" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:26:20.673971" elapsed="0.000482"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:20.674933" elapsed="0.000036"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:20.675220" elapsed="0.000031"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given `key_value_pairs` and/or `items` to the `dictionary`.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:20.675564" elapsed="0.000031"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-10-20T23:26:20.674708" elapsed="0.000936"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-10-20T23:26:20.674521" elapsed="0.001168"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-20T23:26:20.675750" elapsed="0.000039"/>
</return>
<msg time="2026-10-20T23:26:20.675975" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-20T23:26:20.672720" elapsed="0.003324"/>
</kw>
<status status="PASS" start="2026-10-20T23:26:20.671948" elapsed="0.004149"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:20.676659" elapsed="0.000063"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:26:20.676180" elapsed="0.000615"/>
</branch>
<status status="PASS" start="2026-10-20T23:26:20.671843" elapsed="0.005053"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:26:20.679495" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-10-20T23:26:20.678437" elapsed="0.001226"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:26:20.679790" elapsed="0.000075"/>
</return>
<arg>folder=${folder}</arg>
<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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-10-20T23:26:20.655433" elapsed="0.024688"/>
</kw>
<msg time="2026-10-20T23:26:20.680571" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:26:20.644870" elapsed="0.035774"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:20.687541" 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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:20.691615" 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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:20.695692" elapsed="0.000026"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:20.695929" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:20.696110" elapsed="0.000019"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:20.696555" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:26:20.696404" elapsed="0.000312"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:26:20.696388" 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-10-20T23:26:20.696902" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:20.697084" 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-10-20T23:26:20.697248" elapsed="0.000019"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-20T23:26:20.696352" elapsed="0.000945"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-20T23:26:20.696180" 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>Concatenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:20.697517" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-20T23:26:20.697586" elapsed="0.000015"/>
</return>
<msg time="2026-10-20T23:26:20.697694" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-10-20T23:26:20.643430" elapsed="0.054288"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:26:20.699090" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:26:20.698725" elapsed="0.000521">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-10-20T23:26:20.699520" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:26:20.698369" elapsed="0.001177"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:20.699835" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:26:20.699612" elapsed="0.000276"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:26:20.700624" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:26:20.700101" elapsed="0.000547"/>
</kw>
<status status="PASS" start="2026-10-20T23:26:20.699911" elapsed="0.000770"/>
</branch>
<status status="PASS" start="2026-10-20T23:26:20.699595" elapsed="0.001106"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:26:20.701210" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:26:20.700863" elapsed="0.000372"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-20T23:26:20.701281" elapsed="0.000068"/>
</return>
<msg time="2026-10-20T23:26:20.701460" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:26:20.698020" elapsed="0.003463"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:26:20.702758" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:26:20.702406" elapsed="0.000504">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-10-20T23:26:20.703150" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:26:20.702040" elapsed="0.001134"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-10-20T23:26:20.703430" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-10-20T23:26:20.703241" elapsed="0.000248"/>
</branch>
<status status="PASS" start="2026-10-20T23:26:20.703223" elapsed="0.000288"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:20.703671" elapsed="0.000053"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the `string` using `separator` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:20.703885" elapsed="0.000025"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-10-20T23:26:20.703950" elapsed="0.000014"/>
</return>
<msg time="2026-10-20T23:26:20.704077" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:26:20.701739" elapsed="0.002363"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:26:20.705453" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:26:20.705175" elapsed="0.000322"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:26:20.705909" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:26:20.705689" elapsed="0.000260"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:26:20.712648" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:26:20.712755" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '405'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/ietf-yang-library:modules-state&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:26:20.712949" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:26:20.706236" elapsed="0.007133">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:26:20.706009" elapsed="0.007441">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:20.713638" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:26:20.713482" elapsed="0.000222"/>
</branch>
<status status="FAIL" start="2026-10-20T23:26:20.705991" elapsed="0.007736">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:20.714231" elapsed="0.000026"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-20T23:26:20.714430" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:26:20.714390" elapsed="0.000083"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:26:20.714363" elapsed="0.000132"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:20.714637" elapsed="0.000020"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-20T23:26:20.714700" elapsed="0.000013"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-10-20T23:26:20.704469" elapsed="0.010331">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:26:20.714866" elapsed="0.000016"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-10-20T23:26:20.626655" elapsed="0.088301">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:20.715199" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:26:20.715038" elapsed="0.000226"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:26:20.715023" elapsed="0.000263"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:26:20.715383" elapsed="0.000017"/>
</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-10-20T23:26:20.625131" elapsed="0.090353">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-10-20T23:26:20.619185" elapsed="0.096359">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-10-20T23:26:20.618927" elapsed="0.096668">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</for>
<arg>${member_index_list}</arg>
<status status="FAIL" start="2026-10-20T23:26:20.614610" elapsed="0.101068">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:26:20.614078" elapsed="0.101650">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<status status="FAIL" start="2026-10-20T23:26:20.614045" elapsed="0.101711">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:26:20.716016" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:26:20.715816" elapsed="0.000253"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:26:20.715801" elapsed="0.000290"/>
</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-10-20T23:26:20.612134" elapsed="0.104030">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:26:30.724599" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:26:30.723942" elapsed="0.000796"/>
</branch>
<status status="PASS" start="2026-10-20T23:26:30.723898" elapsed="0.000894"/>
</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-10-20T23:26:30.727924" 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-10-20T23:26:30.727089" elapsed="0.000893"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:26:30.728982" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:26:30.728380" elapsed="0.000659"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-20T23:26:30.729136" elapsed="0.000069"/>
</return>
<msg time="2026-10-20T23:26:30.729485" 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-10-20T23:26:30.726198" elapsed="0.003340"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:26:30.731649" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:26:30.731004" elapsed="0.000702"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-20T23:26:30.731799" elapsed="0.000058"/>
</return>
<msg time="2026-10-20T23:26:30.732075" 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-10-20T23:26:30.730231" elapsed="0.001896"/>
</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-10-20T23:26:30.769072" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:26:30.768168" elapsed="0.001071"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:26:30.772130" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:26:30.771819" elapsed="0.000412">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</status>
</kw>
<msg time="2026-10-20T23:26:30.772633" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:26:30.771053" elapsed="0.001731"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:26:30.775503" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:26:30.774473" elapsed="0.001182"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-20T23:26:30.777801" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-10-20T23:26:30.778183" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-10-20T23:26:30.777326" elapsed="0.001120"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:26:30.780745" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:26:30.780035" elapsed="0.000882"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:26:30.782891" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:26:30.782534" elapsed="0.000418"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:26:30.783630" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:26:30.783216" elapsed="0.000450"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:30.784087" elapsed="0.000030"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:30.784458" elapsed="0.000035"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given `key_value_pairs` and/or `items` to the `dictionary`.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:30.784738" elapsed="0.000029"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-10-20T23:26:30.783895" elapsed="0.000921"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-10-20T23:26:30.783731" elapsed="0.001127"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-20T23:26:30.784917" elapsed="0.000039"/>
</return>
<msg time="2026-10-20T23:26:30.785144" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-20T23:26:30.781821" elapsed="0.003394"/>
</kw>
<status status="PASS" start="2026-10-20T23:26:30.781162" elapsed="0.004109"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:30.785819" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:26:30.785400" elapsed="0.000529"/>
</branch>
<status status="PASS" start="2026-10-20T23:26:30.781055" elapsed="0.004957"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:26:30.788694" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-10-20T23:26:30.787624" elapsed="0.001220"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:26:30.788964" 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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-10-20T23:26:30.764834" elapsed="0.024516"/>
</kw>
<msg time="2026-10-20T23:26:30.789770" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:26:30.755640" elapsed="0.034206"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:30.794235" elapsed="0.000026"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:30.798366" elapsed="0.000025"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:30.802421" elapsed="0.000025"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:30.802636" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:30.802819" elapsed="0.000019"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:30.803210" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:26:30.803063" elapsed="0.000333"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:26:30.803049" 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-10-20T23:26:30.803583" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:30.803764" 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-10-20T23:26:30.803928" elapsed="0.000019"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-20T23:26:30.803021" elapsed="0.000955"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-20T23:26:30.802887" elapsed="0.001113"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Concatenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:30.804152" elapsed="0.000018"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-20T23:26:30.804219" elapsed="0.000015"/>
</return>
<msg time="2026-10-20T23:26:30.804352" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-10-20T23:26:30.754224" elapsed="0.050156"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:26:30.805691" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:26:30.805341" elapsed="0.000501">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-10-20T23:26:30.806071" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:26:30.804987" elapsed="0.001109"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:30.806418" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:26:30.806162" elapsed="0.000311"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:26:30.807152" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:26:30.806692" elapsed="0.000484"/>
</kw>
<status status="PASS" start="2026-10-20T23:26:30.806496" elapsed="0.000713"/>
</branch>
<status status="PASS" start="2026-10-20T23:26:30.806144" elapsed="0.001085"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:26:30.807765" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:26:30.807421" elapsed="0.000369"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-20T23:26:30.807835" elapsed="0.000027"/>
</return>
<msg time="2026-10-20T23:26:30.807961" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:26:30.804684" elapsed="0.003301"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:26:30.809232" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:26:30.808892" elapsed="0.000522">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-10-20T23:26:30.809643" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:26:30.808572" elapsed="0.001095"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-10-20T23:26:30.809832" elapsed="0.000024"/>
</return>
<status status="PASS" start="2026-10-20T23:26:30.809734" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-10-20T23:26:30.809716" elapsed="0.000193"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:30.810063" elapsed="0.000050"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the `string` using `separator` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:30.810272" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-10-20T23:26:30.810407" elapsed="0.000016"/>
</return>
<msg time="2026-10-20T23:26:30.810535" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:26:30.808234" elapsed="0.002325"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:26:30.811838" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:26:30.811612" elapsed="0.000268"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:26:30.812286" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:26:30.812068" 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-10-20T23:26:30.817925" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:26:30.818040" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '405'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/ietf-yang-library:modules-state&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:26:30.818246" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:26:30.812650" elapsed="0.006016">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:26:30.812421" elapsed="0.006329">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:30.818960" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:26:30.818785" elapsed="0.000236"/>
</branch>
<status status="FAIL" start="2026-10-20T23:26:30.812404" elapsed="0.006640">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:30.819635" elapsed="0.000027"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-20T23:26:30.819768" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:26:30.819731" elapsed="0.000077"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:26:30.819713" 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-10-20T23:26:30.819971" elapsed="0.000020"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-20T23:26:30.820034" elapsed="0.000014"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-10-20T23:26:30.810872" elapsed="0.009265">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:26:30.820206" elapsed="0.000016"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-10-20T23:26:30.738079" elapsed="0.082219">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:30.820584" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:26:30.820420" elapsed="0.000229"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:26:30.820403" elapsed="0.000269"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:26:30.820745" elapsed="0.000015"/>
</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-10-20T23:26:30.736659" elapsed="0.084182">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-10-20T23:26:30.729901" elapsed="0.091001">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-10-20T23:26:30.729652" elapsed="0.091303">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</for>
<arg>${member_index_list}</arg>
<status status="FAIL" start="2026-10-20T23:26:30.725445" elapsed="0.095598">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:26:30.724905" elapsed="0.096186">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<status status="FAIL" start="2026-10-20T23:26:30.724872" elapsed="0.096248">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:26:30.821457" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:26:30.821183" elapsed="0.000328"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:26:30.821167" elapsed="0.000366"/>
</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-10-20T23:26:30.723089" elapsed="0.098518">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:26:40.830576" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:26:40.829898" elapsed="0.000821"/>
</branch>
<status status="PASS" start="2026-10-20T23:26:40.829850" elapsed="0.000923"/>
</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-10-20T23:26:40.833955" 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-10-20T23:26:40.833069" elapsed="0.000945"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:26:40.835019" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:26:40.834404" elapsed="0.000673"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-20T23:26:40.835174" elapsed="0.000070"/>
</return>
<msg time="2026-10-20T23:26:40.835533" 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-10-20T23:26:40.832178" elapsed="0.003407"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:26:40.837724" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:26:40.837063" elapsed="0.000716"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-20T23:26:40.837873" elapsed="0.000059"/>
</return>
<msg time="2026-10-20T23:26:40.838143" 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-10-20T23:26:40.836286" elapsed="0.001908"/>
</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-10-20T23:26:40.873203" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:26:40.872396" elapsed="0.000991"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:26:40.875885" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:26:40.875591" elapsed="0.000393">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</status>
</kw>
<msg time="2026-10-20T23:26:40.876261" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:26:40.874867" elapsed="0.001842"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:26:40.879177" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:26:40.878175" elapsed="0.001166"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-20T23:26:40.881261" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-10-20T23:26:40.881908" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-10-20T23:26:40.880831" elapsed="0.001219"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:26:40.884202" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:26:40.883648" elapsed="0.000755"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:26:40.886259" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:26:40.885929" elapsed="0.000408"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:26:40.886953" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:26:40.886600" elapsed="0.000386"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:40.887481" elapsed="0.000031"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:40.887741" elapsed="0.000031"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given `key_value_pairs` and/or `items` to the `dictionary`.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:40.887995" elapsed="0.000026"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-10-20T23:26:40.887200" elapsed="0.000867"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-10-20T23:26:40.887046" elapsed="0.001060"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-20T23:26:40.888161" elapsed="0.000037"/>
</return>
<msg time="2026-10-20T23:26:40.888423" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-20T23:26:40.885241" elapsed="0.003251"/>
</kw>
<status status="PASS" start="2026-10-20T23:26:40.884650" elapsed="0.003896"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:40.889022" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:26:40.888629" elapsed="0.000496"/>
</branch>
<status status="PASS" start="2026-10-20T23:26:40.884546" elapsed="0.004658"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:26:40.891748" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-10-20T23:26:40.890737" elapsed="0.001153"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:26:40.892004" elapsed="0.000072"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-10-20T23:26:40.869222" elapsed="0.023165"/>
</kw>
<msg time="2026-10-20T23:26:40.892783" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:26:40.860529" elapsed="0.032324"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:40.898889" elapsed="0.000036"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:40.904531" elapsed="0.000035"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:40.910151" elapsed="0.000034"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:40.910482" 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-10-20T23:26:40.910738" elapsed="0.000026"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:40.911287" elapsed="0.000108"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:26:40.911083" elapsed="0.000465"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:26:40.911063" elapsed="0.000520"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:40.911805" 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-10-20T23:26:40.912054" 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-10-20T23:26:40.912280" elapsed="0.000045"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-20T23:26:40.911024" elapsed="0.001358"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-20T23:26:40.910832" elapsed="0.001588"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Concatenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:40.912638" elapsed="0.000026"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-20T23:26:40.912730" elapsed="0.000021"/>
</return>
<msg time="2026-10-20T23:26:40.912877" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-10-20T23:26:40.859103" elapsed="0.053807"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:26:40.914826" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:26:40.914243" elapsed="0.000733">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-10-20T23:26:40.915202" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:26:40.913792" elapsed="0.001434"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:40.915543" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:26:40.915290" elapsed="0.000306"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:26:40.916272" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:26:40.915810" elapsed="0.000487"/>
</kw>
<status status="PASS" start="2026-10-20T23:26:40.915619" elapsed="0.000745"/>
</branch>
<status status="PASS" start="2026-10-20T23:26:40.915273" elapsed="0.001112"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:26:40.916889" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:26:40.916547" elapsed="0.000366"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-20T23:26:40.916958" elapsed="0.000027"/>
</return>
<msg time="2026-10-20T23:26:40.917083" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:26:40.913368" elapsed="0.003738"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:26:40.918423" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:26:40.918022" elapsed="0.000555">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-10-20T23:26:40.918803" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:26:40.917699" elapsed="0.001128"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-10-20T23:26:40.918992" elapsed="0.000024"/>
</return>
<status status="PASS" start="2026-10-20T23:26:40.918892" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-10-20T23:26:40.918875" elapsed="0.000194"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:40.919220" elapsed="0.000050"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the `string` using `separator` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:40.919471" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-10-20T23:26:40.919532" elapsed="0.000014"/>
</return>
<msg time="2026-10-20T23:26:40.919658" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:26:40.917389" elapsed="0.002292"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:26:40.920952" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:26:40.920725" elapsed="0.000269"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:26:40.921443" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:26:40.921181" 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-10-20T23:26:40.926920" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:26:40.927021" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '405'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/ietf-yang-library:modules-state&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:26:40.927205" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:26:40.921770" elapsed="0.005822">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:26:40.921544" elapsed="0.006124">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:40.927849" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:26:40.927698" elapsed="0.000210"/>
</branch>
<status status="FAIL" start="2026-10-20T23:26:40.921526" elapsed="0.006404">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:40.928489" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-20T23:26:40.928614" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:26:40.928581" elapsed="0.000073"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:26:40.928564" elapsed="0.000111"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:40.928813" elapsed="0.000020"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-20T23:26:40.928877" elapsed="0.000014"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-10-20T23:26:40.919991" elapsed="0.008985">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:26:40.929044" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-10-20T23:26:40.843123" elapsed="0.086011">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:40.929410" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:26:40.929217" elapsed="0.000264"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:26:40.929201" elapsed="0.000302"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:26:40.929564" elapsed="0.000016"/>
</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-10-20T23:26:40.841715" elapsed="0.087945">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-10-20T23:26:40.835955" elapsed="0.093764">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-10-20T23:26:40.835702" elapsed="0.094069">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</for>
<arg>${member_index_list}</arg>
<status status="FAIL" start="2026-10-20T23:26:40.831419" elapsed="0.098436">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:26:40.830889" elapsed="0.099015">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<status status="FAIL" start="2026-10-20T23:26:40.830856" elapsed="0.099076">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:26:40.930191" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:26:40.929995" elapsed="0.000248"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:26:40.929979" elapsed="0.000286"/>
</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-10-20T23:26:40.828979" elapsed="0.101403">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:26:50.939366" elapsed="0.000073"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:26:50.938722" elapsed="0.000806"/>
</branch>
<status status="PASS" start="2026-10-20T23:26:50.938677" elapsed="0.000906"/>
</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-10-20T23:26:50.942859" 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-10-20T23:26:50.941993" elapsed="0.000926"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:26:50.943932" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:26:50.943264" elapsed="0.000723"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-20T23:26:50.944082" elapsed="0.000069"/>
</return>
<msg time="2026-10-20T23:26:50.944433" 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-10-20T23:26:50.941063" elapsed="0.003423"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:26:50.946861" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:26:50.946077" elapsed="0.000842"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-20T23:26:50.947015" elapsed="0.000061"/>
</return>
<msg time="2026-10-20T23:26:50.947294" 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-10-20T23:26:50.945263" elapsed="0.002117"/>
</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-10-20T23:26:50.982725" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:26:50.981839" elapsed="0.001031"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:26:50.985572" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:26:50.985243" elapsed="0.000429">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</status>
</kw>
<msg time="2026-10-20T23:26:50.985949" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:26:50.984559" elapsed="0.001529"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:26:50.988692" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:26:50.987663" elapsed="0.001173"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-20T23:26:50.991138" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-10-20T23:26:50.991581" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-10-20T23:26:50.990665" elapsed="0.001059"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:26:50.993922" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:26:50.993337" elapsed="0.000751"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:26:50.995999" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:26:50.995664" elapsed="0.000394"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:26:50.996796" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:26:50.996305" elapsed="0.000525"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:50.997239" elapsed="0.000029"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:50.997534" elapsed="0.000031"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given `key_value_pairs` and/or `items` to the `dictionary`.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:50.997793" elapsed="0.000030"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-10-20T23:26:50.997056" elapsed="0.000816"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-10-20T23:26:50.996895" elapsed="0.001018"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-20T23:26:50.997970" elapsed="0.000040"/>
</return>
<msg time="2026-10-20T23:26:50.998221" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-20T23:26:50.995071" elapsed="0.003222"/>
</kw>
<status status="PASS" start="2026-10-20T23:26:50.994444" elapsed="0.003978"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:50.998917" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:26:50.998514" elapsed="0.000511"/>
</branch>
<status status="PASS" start="2026-10-20T23:26:50.994224" elapsed="0.004881"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:26:51.001674" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-10-20T23:26:51.000736" elapsed="0.001041"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:26:51.001861" elapsed="0.000056"/>
</return>
<arg>folder=${folder}</arg>
<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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-10-20T23:26:50.978632" elapsed="0.023469"/>
</kw>
<msg time="2026-10-20T23:26:51.002431" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:26:50.970297" elapsed="0.032194"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:51.006871" elapsed="0.000026"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:51.010978" elapsed="0.000025"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:51.015141" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:51.015406" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:51.015593" elapsed="0.000019"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:51.015995" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:26:51.015849" elapsed="0.000303"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:26:51.015835" elapsed="0.000343"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:51.016355" 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-10-20T23:26:51.016549" 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-10-20T23:26:51.016712" elapsed="0.000018"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-20T23:26:51.015803" elapsed="0.000957"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-20T23:26:51.015664" elapsed="0.001120"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Concatenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:51.016934" elapsed="0.000019"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-20T23:26:51.017001" elapsed="0.000015"/>
</return>
<msg time="2026-10-20T23:26:51.017111" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-10-20T23:26:50.968907" elapsed="0.048227"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:26:51.018497" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:26:51.018104" elapsed="0.000554">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-10-20T23:26:51.018886" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:26:51.017775" elapsed="0.001135"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:51.019194" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:26:51.018974" elapsed="0.000272"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:26:51.019968" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:26:51.019506" elapsed="0.000487"/>
</kw>
<status status="PASS" start="2026-10-20T23:26:51.019269" elapsed="0.000756"/>
</branch>
<status status="PASS" start="2026-10-20T23:26:51.018957" elapsed="0.001088"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:26:51.020588" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:26:51.020206" elapsed="0.000406"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-20T23:26:51.020657" elapsed="0.000026"/>
</return>
<msg time="2026-10-20T23:26:51.020781" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:26:51.017470" elapsed="0.003334"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:26:51.022067" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:26:51.021723" elapsed="0.000496">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-10-20T23:26:51.022482" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:26:51.021404" elapsed="0.001103"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-10-20T23:26:51.022674" elapsed="0.000024"/>
</return>
<status status="PASS" start="2026-10-20T23:26:51.022573" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-10-20T23:26:51.022555" elapsed="0.000196"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:51.022903" elapsed="0.000050"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the `string` using `separator` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:51.023113" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-10-20T23:26:51.023175" elapsed="0.000015"/>
</return>
<msg time="2026-10-20T23:26:51.023302" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:26:51.021058" elapsed="0.002322"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:26:51.024687" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:26:51.024461" elapsed="0.000268"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:26:51.025148" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:26:51.024915" elapsed="0.000277"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:26:51.030898" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:26:51.031001" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '405'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/ietf-yang-library:modules-state&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:26:51.031186" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:26:51.025524" elapsed="0.006081">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:26:51.025253" elapsed="0.006430">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:51.031911" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:26:51.031720" elapsed="0.000254"/>
</branch>
<status status="FAIL" start="2026-10-20T23:26:51.025235" elapsed="0.006762">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:51.032597" elapsed="0.000027"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-20T23:26:51.032725" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:26:51.032692" elapsed="0.000073"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:26:51.032675" elapsed="0.000111"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:51.032943" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-20T23:26:51.033009" 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-10-20T23:26:51.023707" elapsed="0.009405">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:26:51.033179" elapsed="0.000014"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-10-20T23:26:50.952446" elapsed="0.080822">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-10-20T23:26:51.033551" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:26:51.033375" elapsed="0.000242"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:26:51.033359" elapsed="0.000280"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:26:51.033704" elapsed="0.000016"/>
</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-10-20T23:26:50.950971" elapsed="0.082831">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-10-20T23:26:50.944876" elapsed="0.088985">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-10-20T23:26:50.944601" elapsed="0.089312">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</for>
<arg>${member_index_list}</arg>
<status status="FAIL" start="2026-10-20T23:26:50.940244" elapsed="0.093754">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:26:50.939697" elapsed="0.094351">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<status status="FAIL" start="2026-10-20T23:26:50.939664" elapsed="0.094412">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:26:51.034410" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:26:51.034139" elapsed="0.000326"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:26:51.034124" elapsed="0.000363"/>
</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-10-20T23:26:50.937831" elapsed="0.096731">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:27:01.043267" elapsed="0.000082"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:27:01.042658" elapsed="0.000800"/>
</branch>
<status status="PASS" start="2026-10-20T23:27:01.042612" elapsed="0.000901"/>
</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-10-20T23:27:01.046823" 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-10-20T23:27:01.045893" elapsed="0.000990"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:27:01.047895" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:27:01.047231" elapsed="0.000718"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-20T23:27:01.048045" elapsed="0.000071"/>
</return>
<msg time="2026-10-20T23:27:01.048375" 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-10-20T23:27:01.044910" elapsed="0.003536"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:27:01.050699" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:27:01.049985" elapsed="0.000775"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-20T23:27:01.050859" elapsed="0.000062"/>
</return>
<msg time="2026-10-20T23:27:01.051142" 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-10-20T23:27:01.049149" elapsed="0.002044"/>
</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-10-20T23:27:01.087187" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:27:01.086283" elapsed="0.001090"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:27:01.090098" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:27:01.089779" elapsed="0.000431">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</status>
</kw>
<msg time="2026-10-20T23:27:01.090746" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:27:01.088966" elapsed="0.001928"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:27:01.093534" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:27:01.092482" elapsed="0.001203"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-20T23:27:01.095859" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-10-20T23:27:01.096242" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-10-20T23:27:01.095186" elapsed="0.001257"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:27:01.098916" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:27:01.098275" elapsed="0.000814"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:27:01.101134" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:27:01.100791" elapsed="0.000403"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:27:01.101955" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:27:01.101575" elapsed="0.000416"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:01.102459" elapsed="0.000035"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:01.102734" elapsed="0.000035"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given `key_value_pairs` and/or `items` to the `dictionary`.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:01.103002" elapsed="0.000029"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-10-20T23:27:01.102216" elapsed="0.000863"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-10-20T23:27:01.102056" elapsed="0.001063"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-20T23:27:01.103179" elapsed="0.000040"/>
</return>
<msg time="2026-10-20T23:27:01.103486" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-20T23:27:01.100110" elapsed="0.003453"/>
</kw>
<status status="PASS" start="2026-10-20T23:27:01.099474" elapsed="0.004148"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:01.104120" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:27:01.103709" elapsed="0.000523"/>
</branch>
<status status="PASS" start="2026-10-20T23:27:01.099229" elapsed="0.005115"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:27:01.106644" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-10-20T23:27:01.105883" elapsed="0.000866"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:27:01.106835" elapsed="0.000054"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-10-20T23:27:01.082990" elapsed="0.024086"/>
</kw>
<msg time="2026-10-20T23:27:01.107406" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:27:01.073819" elapsed="0.033659"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:01.113361" 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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:01.117465" 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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:01.121547" elapsed="0.000025"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:01.121768" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:01.121950" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:01.122379" elapsed="0.000064"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:27:01.122199" elapsed="0.000359"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:27:01.122184" elapsed="0.000402"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:01.122750" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:01.122936" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:01.123102" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-20T23:27:01.122155" elapsed="0.000998"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-20T23:27:01.122018" elapsed="0.001160"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Concatenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:01.123358" elapsed="0.000023"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-20T23:27:01.123448" elapsed="0.000030"/>
</return>
<msg time="2026-10-20T23:27:01.123578" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-10-20T23:27:01.072443" elapsed="0.051161"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:27:01.125036" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:27:01.124672" elapsed="0.000524">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-10-20T23:27:01.125475" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:27:01.124254" elapsed="0.001248"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:01.125799" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:27:01.125571" elapsed="0.000283"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:27:01.126646" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:27:01.126071" elapsed="0.000600"/>
</kw>
<status status="PASS" start="2026-10-20T23:27:01.125877" elapsed="0.000827"/>
</branch>
<status status="PASS" start="2026-10-20T23:27:01.125552" elapsed="0.001173"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:27:01.127238" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:27:01.126890" elapsed="0.000374"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-20T23:27:01.127341" elapsed="0.000032"/>
</return>
<msg time="2026-10-20T23:27:01.127494" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:27:01.123912" elapsed="0.003606"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:27:01.128803" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:27:01.128450" elapsed="0.000511">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-10-20T23:27:01.129193" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:27:01.128077" elapsed="0.001140"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-10-20T23:27:01.129475" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-10-20T23:27:01.129285" elapsed="0.000250"/>
</branch>
<status status="PASS" start="2026-10-20T23:27:01.129266" elapsed="0.000292"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:01.129714" elapsed="0.000068"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the `string` using `separator` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:01.129946" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-10-20T23:27:01.130009" elapsed="0.000016"/>
</return>
<msg time="2026-10-20T23:27:01.130139" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:27:01.127770" elapsed="0.002394"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:27:01.131513" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:27:01.131233" elapsed="0.000325"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:27:01.131998" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:27:01.131767" elapsed="0.000274"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:27:01.137943" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:27:01.138049" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '405'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/ietf-yang-library:modules-state&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:27:01.138255" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:27:01.132409" elapsed="0.006276">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:27:01.132103" elapsed="0.006663">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:01.138951" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:27:01.138797" elapsed="0.000214"/>
</branch>
<status status="FAIL" start="2026-10-20T23:27:01.132085" elapsed="0.006949">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:01.139613" elapsed="0.000026"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-20T23:27:01.139742" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:27:01.139707" elapsed="0.000076"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:27:01.139690" 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-10-20T23:27:01.139945" elapsed="0.000020"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-20T23:27:01.140010" elapsed="0.000014"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-10-20T23:27:01.130521" elapsed="0.009592">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:27:01.140181" elapsed="0.000014"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-10-20T23:27:01.056081" elapsed="0.084195">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:01.140574" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:27:01.140396" elapsed="0.000246"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:27:01.140378" elapsed="0.000288"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:27:01.140729" elapsed="0.000016"/>
</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-10-20T23:27:01.054672" elapsed="0.086155">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-10-20T23:27:01.048819" elapsed="0.092068">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-10-20T23:27:01.048562" elapsed="0.092377">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</for>
<arg>${member_index_list}</arg>
<status status="FAIL" start="2026-10-20T23:27:01.044100" elapsed="0.096925">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:27:01.043628" elapsed="0.097447">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<status status="FAIL" start="2026-10-20T23:27:01.043595" elapsed="0.097509">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:27:01.141416" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:27:01.141166" elapsed="0.000321"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:27:01.141151" elapsed="0.000359"/>
</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-10-20T23:27:01.041790" elapsed="0.099796">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:27:11.149961" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:27:11.149296" elapsed="0.000807"/>
</branch>
<status status="PASS" start="2026-10-20T23:27:11.149252" elapsed="0.000904"/>
</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-10-20T23:27:11.153362" 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-10-20T23:27:11.152523" elapsed="0.000900"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:27:11.154431" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:27:11.153790" elapsed="0.000715"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-20T23:27:11.154606" elapsed="0.000080"/>
</return>
<msg time="2026-10-20T23:27:11.154933" 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-10-20T23:27:11.151640" elapsed="0.003346"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:27:11.157285" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:27:11.156578" elapsed="0.000827"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-20T23:27:11.157537" elapsed="0.000070"/>
</return>
<msg time="2026-10-20T23:27:11.157865" 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-10-20T23:27:11.155752" elapsed="0.002168"/>
</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-10-20T23:27:11.196541" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:27:11.195569" elapsed="0.001123"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:27:11.199505" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:27:11.199097" elapsed="0.000516">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</status>
</kw>
<msg time="2026-10-20T23:27:11.199903" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:27:11.198354" elapsed="0.001693"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:27:11.202764" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:27:11.201741" elapsed="0.001169"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-20T23:27:11.205004" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-10-20T23:27:11.205508" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-10-20T23:27:11.204556" elapsed="0.001102"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:27:11.207958" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:27:11.207188" elapsed="0.000940"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:27:11.210107" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:27:11.209756" elapsed="0.000411"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:27:11.210843" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:27:11.210453" elapsed="0.000425"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:11.211283" elapsed="0.000112"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:11.211658" elapsed="0.000033"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given `key_value_pairs` and/or `items` to the `dictionary`.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:11.211920" elapsed="0.000027"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-10-20T23:27:11.211100" elapsed="0.000892"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-10-20T23:27:11.210942" elapsed="0.001089"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-20T23:27:11.212086" elapsed="0.000037"/>
</return>
<msg time="2026-10-20T23:27:11.212304" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-20T23:27:11.209033" elapsed="0.003386"/>
</kw>
<status status="PASS" start="2026-10-20T23:27:11.208406" elapsed="0.004090"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:11.212999" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:27:11.212597" elapsed="0.000513"/>
</branch>
<status status="PASS" start="2026-10-20T23:27:11.208266" elapsed="0.004925"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:27:11.215868" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-10-20T23:27:11.214777" elapsed="0.001242"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:27:11.216141" elapsed="0.000078"/>
</return>
<arg>folder=${folder}</arg>
<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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-10-20T23:27:11.192270" elapsed="0.024276"/>
</kw>
<msg time="2026-10-20T23:27:11.216943" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:27:11.181615" elapsed="0.035403"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:11.221838" 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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:11.225984" 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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:11.230124" elapsed="0.000025"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:11.230356" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:11.230701" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:11.231100" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:27:11.230951" elapsed="0.000303"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:27:11.230936" 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-10-20T23:27:11.231473" 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-10-20T23:27:11.231680" 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-10-20T23:27:11.231846" elapsed="0.000019"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-20T23:27:11.230908" elapsed="0.000988"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-20T23:27:11.230772" elapsed="0.001148"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Concatenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:11.232074" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-20T23:27:11.232144" elapsed="0.000015"/>
</return>
<msg time="2026-10-20T23:27:11.232254" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-10-20T23:27:11.180127" elapsed="0.052152"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:27:11.233680" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:27:11.233283" elapsed="0.000552">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-10-20T23:27:11.234069" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:27:11.232947" elapsed="0.001148"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:11.234426" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:27:11.234162" elapsed="0.000334"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:27:11.235193" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:27:11.234717" elapsed="0.000502"/>
</kw>
<status status="PASS" start="2026-10-20T23:27:11.234521" elapsed="0.000732"/>
</branch>
<status status="PASS" start="2026-10-20T23:27:11.234144" elapsed="0.001128"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:27:11.235854" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:27:11.235492" elapsed="0.000387"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-20T23:27:11.235927" elapsed="0.000028"/>
</return>
<msg time="2026-10-20T23:27:11.236057" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:27:11.232633" elapsed="0.003448"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:27:11.237408" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:27:11.237026" elapsed="0.000557">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-10-20T23:27:11.237840" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:27:11.236691" elapsed="0.001174"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-10-20T23:27:11.238038" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-10-20T23:27:11.237935" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-10-20T23:27:11.237916" elapsed="0.000202"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:11.238276" elapsed="0.000123"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the `string` using `separator` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:11.238590" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-10-20T23:27:11.238655" elapsed="0.000015"/>
</return>
<msg time="2026-10-20T23:27:11.238786" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:27:11.236363" elapsed="0.002448"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:27:11.240129" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:27:11.239897" elapsed="0.000276"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:27:11.240646" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:27:11.240398" 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-10-20T23:27:11.248387" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:27:11.248508" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '405'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/ietf-yang-library:modules-state&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:27:11.248700" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:27:11.240985" elapsed="0.008070">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:27:11.240751" elapsed="0.008382">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:11.249359" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:27:11.249165" elapsed="0.000260"/>
</branch>
<status status="FAIL" start="2026-10-20T23:27:11.240733" elapsed="0.008716">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:11.249980" elapsed="0.000027"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-20T23:27:11.250112" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:27:11.250076" elapsed="0.000078"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:27:11.250058" elapsed="0.000119"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:11.250345" elapsed="0.000028"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-20T23:27:11.250420" elapsed="0.000016"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-10-20T23:27:11.239130" elapsed="0.011408">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:27:11.250608" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-10-20T23:27:11.163178" elapsed="0.087523">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:11.250954" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:27:11.250790" elapsed="0.000233"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:27:11.250772" elapsed="0.000275"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:27:11.251112" elapsed="0.000017"/>
</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-10-20T23:27:11.161687" elapsed="0.089525">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-10-20T23:27:11.155387" elapsed="0.095888">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-10-20T23:27:11.155100" elapsed="0.096268">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</for>
<arg>${member_index_list}</arg>
<status status="FAIL" start="2026-10-20T23:27:11.150824" elapsed="0.100640">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:27:11.150266" elapsed="0.101269">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<status status="FAIL" start="2026-10-20T23:27:11.150234" elapsed="0.101331">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:27:11.251840" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:27:11.251632" elapsed="0.000264"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:27:11.251614" elapsed="0.000307"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-10-20T23:27:11.148461" elapsed="0.103537">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:27:21.261044" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:27:21.260390" elapsed="0.000795"/>
</branch>
<status status="PASS" start="2026-10-20T23:27:21.260293" elapsed="0.000947"/>
</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-10-20T23:27:21.264434" 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-10-20T23:27:21.263595" elapsed="0.000898"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:27:21.265504" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:27:21.264862" elapsed="0.000717"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-20T23:27:21.265676" elapsed="0.000069"/>
</return>
<msg time="2026-10-20T23:27:21.265978" 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-10-20T23:27:21.262703" elapsed="0.003328"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:27:21.268168" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:27:21.267565" elapsed="0.000659"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-20T23:27:21.268347" elapsed="0.000061"/>
</return>
<msg time="2026-10-20T23:27:21.268649" 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-10-20T23:27:21.266788" elapsed="0.001913"/>
</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-10-20T23:27:21.309789" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:27:21.308261" elapsed="0.001677"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:27:21.312585" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:27:21.312238" elapsed="0.000446">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</status>
</kw>
<msg time="2026-10-20T23:27:21.312975" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:27:21.311518" elapsed="0.001601"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:27:21.315885" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:27:21.314862" elapsed="0.001171"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-20T23:27:21.318091" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-10-20T23:27:21.318600" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-10-20T23:27:21.317646" elapsed="0.001100"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:27:21.320987" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:27:21.320261" elapsed="0.000895"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:27:21.323237" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:27:21.322860" elapsed="0.000474"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:27:21.323980" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:27:21.323616" elapsed="0.000399"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:21.324508" elapsed="0.000052"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:21.324800" elapsed="0.000032"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given `key_value_pairs` and/or `items` to the `dictionary`.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:21.325061" elapsed="0.000029"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-10-20T23:27:21.324235" elapsed="0.000900"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-10-20T23:27:21.324076" elapsed="0.001097"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-20T23:27:21.325230" elapsed="0.000038"/>
</return>
<msg time="2026-10-20T23:27:21.325487" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-20T23:27:21.322138" elapsed="0.003440"/>
</kw>
<status status="PASS" start="2026-10-20T23:27:21.321435" elapsed="0.004203"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:21.326106" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:27:21.325720" elapsed="0.000490"/>
</branch>
<status status="PASS" start="2026-10-20T23:27:21.321295" elapsed="0.004992"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:27:21.328937" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-10-20T23:27:21.327873" elapsed="0.001211"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:27:21.329203" elapsed="0.000076"/>
</return>
<arg>folder=${folder}</arg>
<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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-10-20T23:27:21.302827" elapsed="0.026791"/>
</kw>
<msg time="2026-10-20T23:27:21.330016" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:27:21.291994" elapsed="0.038095"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:21.336105" 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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:21.340222" 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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:21.344354" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:21.344594" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:21.344778" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:21.345175" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:27:21.345026" elapsed="0.000333"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:27:21.345011" 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-10-20T23:27:21.345567" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:21.345755" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:21.345922" elapsed="0.000018"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-20T23:27:21.344983" elapsed="0.000987"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-20T23:27:21.344847" elapsed="0.001146"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Concatenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:21.346145" elapsed="0.000019"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-20T23:27:21.346214" elapsed="0.000016"/>
</return>
<msg time="2026-10-20T23:27:21.346349" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-10-20T23:27:21.290590" elapsed="0.055786"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:27:21.347752" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:27:21.347379" elapsed="0.000527">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-10-20T23:27:21.348136" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:27:21.347011" elapsed="0.001149"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:21.348484" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:27:21.348226" elapsed="0.000324"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:27:21.349247" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:27:21.348772" elapsed="0.000501"/>
</kw>
<status status="PASS" start="2026-10-20T23:27:21.348576" elapsed="0.000751"/>
</branch>
<status status="PASS" start="2026-10-20T23:27:21.348208" elapsed="0.001150"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:27:21.349895" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:27:21.349524" elapsed="0.000397"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-20T23:27:21.349966" elapsed="0.000027"/>
</return>
<msg time="2026-10-20T23:27:21.350095" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:27:21.346703" elapsed="0.003416"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:27:21.351428" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:27:21.351048" elapsed="0.000565">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-10-20T23:27:21.351845" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:27:21.350722" elapsed="0.001147"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-10-20T23:27:21.352038" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-10-20T23:27:21.351936" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-10-20T23:27:21.351918" elapsed="0.000199"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:21.352273" elapsed="0.000127"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the `string` using `separator` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:21.352587" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-10-20T23:27:21.352652" elapsed="0.000015"/>
</return>
<msg time="2026-10-20T23:27:21.352782" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:27:21.350401" elapsed="0.002405"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:27:21.354130" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:27:21.353897" elapsed="0.000278"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:27:21.354679" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:27:21.354399" 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-10-20T23:27:21.361611" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:27:21.361731" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '405'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/ietf-yang-library:modules-state&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:27:21.361938" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:27:21.355018" elapsed="0.007360">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:27:21.354785" elapsed="0.007684">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:21.362703" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:27:21.362505" elapsed="0.000260"/>
</branch>
<status status="FAIL" start="2026-10-20T23:27:21.354768" elapsed="0.008020">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:21.363358" elapsed="0.000029"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-20T23:27:21.363497" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:27:21.363461" elapsed="0.000092"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:27:21.363443" elapsed="0.000134"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:21.363723" elapsed="0.000020"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-20T23:27:21.363786" 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-10-20T23:27:21.353123" elapsed="0.010771">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:27:21.363965" elapsed="0.000016"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-10-20T23:27:21.273748" elapsed="0.090310">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:21.364337" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:27:21.364146" elapsed="0.000266"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:27:21.364128" elapsed="0.000307"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:27:21.364508" elapsed="0.000016"/>
</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-10-20T23:27:21.272148" elapsed="0.092475">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-10-20T23:27:21.266430" elapsed="0.098284">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-10-20T23:27:21.266142" elapsed="0.098629">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</for>
<arg>${member_index_list}</arg>
<status status="FAIL" start="2026-10-20T23:27:21.261889" elapsed="0.102972">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:27:21.261390" elapsed="0.103522">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<status status="FAIL" start="2026-10-20T23:27:21.261355" elapsed="0.103587">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:27:21.365213" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:27:21.365007" elapsed="0.000261"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:27:21.364990" elapsed="0.000300"/>
</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-10-20T23:27:21.259429" elapsed="0.105967">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:27:31.373998" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:27:31.373356" elapsed="0.000785"/>
</branch>
<status status="PASS" start="2026-10-20T23:27:31.373280" elapsed="0.000915"/>
</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-10-20T23:27:31.377389" 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-10-20T23:27:31.376525" elapsed="0.000925"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:27:31.378460" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:27:31.377821" elapsed="0.000694"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-20T23:27:31.378630" elapsed="0.000071"/>
</return>
<msg time="2026-10-20T23:27:31.378935" 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-10-20T23:27:31.375650" elapsed="0.003337"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:27:31.381224" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:27:31.380531" elapsed="0.000751"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-20T23:27:31.381409" elapsed="0.000062"/>
</return>
<msg time="2026-10-20T23:27:31.381711" 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-10-20T23:27:31.379767" elapsed="0.001996"/>
</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-10-20T23:27:31.417683" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:27:31.416812" elapsed="0.001016"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:27:31.420648" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:27:31.420235" elapsed="0.000517">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</status>
</kw>
<msg time="2026-10-20T23:27:31.421031" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:27:31.419509" elapsed="0.001660"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:27:31.423791" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:27:31.422801" elapsed="0.001135"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-20T23:27:31.425970" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-10-20T23:27:31.426402" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-10-20T23:27:31.425518" elapsed="0.001028"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:27:31.428849" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:27:31.428111" elapsed="0.000904"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:27:31.430897" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:27:31.430542" elapsed="0.000412"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:27:31.431581" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:27:31.431200" elapsed="0.000429"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:31.432021" elapsed="0.000029"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:31.432276" elapsed="0.000103"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given `key_value_pairs` and/or `items` to the `dictionary`.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:31.432632" elapsed="0.000028"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-10-20T23:27:31.431843" elapsed="0.000863"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-10-20T23:27:31.431691" elapsed="0.001054"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-20T23:27:31.432800" elapsed="0.000037"/>
</return>
<msg time="2026-10-20T23:27:31.433015" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-20T23:27:31.429878" elapsed="0.003205"/>
</kw>
<status status="PASS" start="2026-10-20T23:27:31.429250" elapsed="0.003886"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:31.433658" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:27:31.433217" elapsed="0.000548"/>
</branch>
<status status="PASS" start="2026-10-20T23:27:31.429149" elapsed="0.004696"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:27:31.436399" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-10-20T23:27:31.435375" elapsed="0.001167"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:27:31.436674" elapsed="0.000075"/>
</return>
<arg>folder=${folder}</arg>
<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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-10-20T23:27:31.413550" elapsed="0.023454"/>
</kw>
<msg time="2026-10-20T23:27:31.437418" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:27:31.404299" elapsed="0.033191"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:31.443499" 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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:31.449151" elapsed="0.000034"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:31.454269" elapsed="0.000025"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:31.454495" elapsed="0.000020"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:31.454688" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:31.455081" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:27:31.454936" elapsed="0.000299"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:27:31.454922" elapsed="0.000338"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:31.455440" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:31.455632" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:31.455797" elapsed="0.000019"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-20T23:27:31.454894" elapsed="0.000952"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-20T23:27:31.454758" elapsed="0.001112"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Concatenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:31.456021" elapsed="0.000019"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-20T23:27:31.456089" elapsed="0.000015"/>
</return>
<msg time="2026-10-20T23:27:31.456196" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-10-20T23:27:31.402904" elapsed="0.053315"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:27:31.457537" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:27:31.457173" elapsed="0.000531">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-10-20T23:27:31.457931" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:27:31.456850" elapsed="0.001105"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:31.458238" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:27:31.458020" elapsed="0.000270"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:27:31.459012" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:27:31.458536" elapsed="0.000500"/>
</kw>
<status status="PASS" start="2026-10-20T23:27:31.458339" elapsed="0.000730"/>
</branch>
<status status="PASS" start="2026-10-20T23:27:31.458003" elapsed="0.001086"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:27:31.459629" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:27:31.459251" elapsed="0.000404"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-20T23:27:31.459700" elapsed="0.000027"/>
</return>
<msg time="2026-10-20T23:27:31.459824" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:27:31.456534" elapsed="0.003312"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:27:31.461091" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:27:31.460748" elapsed="0.000496">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-10-20T23:27:31.461487" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:27:31.460416" elapsed="0.001095"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-10-20T23:27:31.461689" elapsed="0.000024"/>
</return>
<status status="PASS" start="2026-10-20T23:27:31.461576" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-10-20T23:27:31.461559" elapsed="0.000207"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:31.461953" elapsed="0.000053"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the `string` using `separator` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:31.462168" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-10-20T23:27:31.462229" elapsed="0.000014"/>
</return>
<msg time="2026-10-20T23:27:31.462378" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:27:31.460092" elapsed="0.002309"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:27:31.463719" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:27:31.463482" elapsed="0.000280"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:27:31.464166" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:27:31.463949" elapsed="0.000257"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:27:31.469646" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:27:31.469748" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '405'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/ietf-yang-library:modules-state&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:27:31.469930" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:27:31.464550" elapsed="0.005735">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:27:31.464265" elapsed="0.006133">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:31.470579" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:27:31.470429" elapsed="0.000221"/>
</branch>
<status status="FAIL" start="2026-10-20T23:27:31.464248" elapsed="0.006424">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:31.471154" elapsed="0.000024"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-20T23:27:31.471276" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:27:31.471243" elapsed="0.000095"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:27:31.471227" elapsed="0.000133"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:31.471498" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-20T23:27:31.471565" elapsed="0.000014"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-10-20T23:27:31.462725" elapsed="0.008952">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:27:31.471743" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-10-20T23:27:31.386673" elapsed="0.085158">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:31.472068" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:27:31.471913" elapsed="0.000221"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:27:31.471897" elapsed="0.000258"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:27:31.472216" elapsed="0.000015"/>
</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-10-20T23:27:31.385186" elapsed="0.087139">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-10-20T23:27:31.379376" elapsed="0.093011">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-10-20T23:27:31.379097" elapsed="0.093341">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</for>
<arg>${member_index_list}</arg>
<status status="FAIL" start="2026-10-20T23:27:31.374840" elapsed="0.097681">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:27:31.374339" elapsed="0.098234">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<status status="FAIL" start="2026-10-20T23:27:31.374277" elapsed="0.098324">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:27:31.472869" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:27:31.472674" elapsed="0.000247"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:27:31.472659" elapsed="0.000283"/>
</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-10-20T23:27:31.372452" elapsed="0.100562">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:27:41.481578" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:27:41.480898" elapsed="0.000847"/>
</branch>
<status status="PASS" start="2026-10-20T23:27:41.480851" elapsed="0.000950"/>
</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-10-20T23:27:41.484962" 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-10-20T23:27:41.484095" elapsed="0.000927"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:27:41.486037" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:27:41.485396" elapsed="0.000697"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-20T23:27:41.486188" elapsed="0.000069"/>
</return>
<msg time="2026-10-20T23:27:41.486521" 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-10-20T23:27:41.483207" elapsed="0.003367"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:27:41.488731" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:27:41.488078" elapsed="0.000711"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-20T23:27:41.488883" elapsed="0.000059"/>
</return>
<msg time="2026-10-20T23:27:41.489171" 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-10-20T23:27:41.487297" elapsed="0.001926"/>
</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-10-20T23:27:41.524533" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:27:41.523658" elapsed="0.001021"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:27:41.527170" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:27:41.526888" elapsed="0.000377">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</status>
</kw>
<msg time="2026-10-20T23:27:41.527567" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:27:41.526165" elapsed="0.001558"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:27:41.530393" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:27:41.529226" elapsed="0.001309"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-20T23:27:41.532481" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-10-20T23:27:41.532869" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-10-20T23:27:41.532016" elapsed="0.000994"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:27:41.535517" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:27:41.534727" elapsed="0.000980"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:27:41.537536" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:27:41.537177" elapsed="0.000417"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:27:41.538219" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:27:41.537859" elapsed="0.000393"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:41.538745" elapsed="0.000029"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:41.539007" elapsed="0.000031"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given `key_value_pairs` and/or `items` to the `dictionary`.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:41.539263" elapsed="0.000027"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-10-20T23:27:41.538543" elapsed="0.000917"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-10-20T23:27:41.538364" elapsed="0.001138"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-20T23:27:41.539560" elapsed="0.000040"/>
</return>
<msg time="2026-10-20T23:27:41.539801" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-20T23:27:41.536603" elapsed="0.003265"/>
</kw>
<status status="PASS" start="2026-10-20T23:27:41.535957" elapsed="0.003965"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:41.540447" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:27:41.540015" elapsed="0.000536"/>
</branch>
<status status="PASS" start="2026-10-20T23:27:41.535854" elapsed="0.004773"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:27:41.543421" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-10-20T23:27:41.542256" elapsed="0.001317"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:27:41.543702" elapsed="0.000076"/>
</return>
<arg>folder=${folder}</arg>
<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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-10-20T23:27:41.520504" elapsed="0.023529"/>
</kw>
<msg time="2026-10-20T23:27:41.544449" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:27:41.511442" elapsed="0.033082"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:41.552631" elapsed="0.000036"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:41.558351" elapsed="0.000037"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:41.564061" elapsed="0.000035"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:41.564397" elapsed="0.000029"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:41.564654" 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-10-20T23:27:41.565224" elapsed="0.000067"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:27:41.565021" elapsed="0.000462"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:27:41.565000" elapsed="0.000521"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:41.565930" 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-10-20T23:27:41.566186" 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-10-20T23:27:41.566437" elapsed="0.000027"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-20T23:27:41.564960" elapsed="0.001547"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-20T23:27:41.564768" elapsed="0.001773"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Concatenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:41.566767" elapsed="0.000028"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-20T23:27:41.566865" elapsed="0.000020"/>
</return>
<msg time="2026-10-20T23:27:41.567015" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-10-20T23:27:41.510026" elapsed="0.057022"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:27:41.568931" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:27:41.568406" elapsed="0.000750">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-10-20T23:27:41.569561" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:27:41.567929" elapsed="0.001668"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:41.570013" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:27:41.569703" elapsed="0.000382"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:27:41.571093" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:27:41.570405" elapsed="0.000723"/>
</kw>
<status status="PASS" start="2026-10-20T23:27:41.570117" elapsed="0.001057"/>
</branch>
<status status="PASS" start="2026-10-20T23:27:41.569664" elapsed="0.001539"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:27:41.571968" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:27:41.571452" elapsed="0.000559"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-20T23:27:41.572089" elapsed="0.000047"/>
</return>
<msg time="2026-10-20T23:27:41.572295" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:27:41.567489" elapsed="0.004852"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:27:41.573605" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:27:41.573227" elapsed="0.000544">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-10-20T23:27:41.574000" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:27:41.572909" elapsed="0.001114"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-10-20T23:27:41.574187" elapsed="0.000024"/>
</return>
<status status="PASS" start="2026-10-20T23:27:41.574088" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-10-20T23:27:41.574071" elapsed="0.000193"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:41.574467" elapsed="0.000050"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the `string` using `separator` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:41.574677" elapsed="0.000030"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-10-20T23:27:41.574749" elapsed="0.000015"/>
</return>
<msg time="2026-10-20T23:27:41.574880" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:27:41.572597" elapsed="0.002306"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:27:41.576177" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:27:41.575952" elapsed="0.000267"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:27:41.576656" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:27:41.576427" 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-10-20T23:27:41.582067" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:27:41.582169" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '405'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/ietf-yang-library:modules-state&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:27:41.582414" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:27:41.576998" elapsed="0.005790">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:27:41.576772" elapsed="0.006093">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:41.583047" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:27:41.582896" elapsed="0.000209"/>
</branch>
<status status="FAIL" start="2026-10-20T23:27:41.576754" elapsed="0.006373">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:41.583636" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-20T23:27:41.583781" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:27:41.583747" elapsed="0.000073"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:27:41.583730" elapsed="0.000110"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:41.583984" elapsed="0.000020"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-20T23:27:41.584047" elapsed="0.000014"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-10-20T23:27:41.575215" elapsed="0.008933">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:27:41.584214" elapsed="0.000014"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-10-20T23:27:41.494067" elapsed="0.090234">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:41.584558" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:27:41.584400" elapsed="0.000222"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:27:41.584384" elapsed="0.000260"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:27:41.584718" elapsed="0.000016"/>
</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-10-20T23:27:41.492639" elapsed="0.092173">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-10-20T23:27:41.486964" elapsed="0.097907">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-10-20T23:27:41.486707" elapsed="0.098214">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</for>
<arg>${member_index_list}</arg>
<status status="FAIL" start="2026-10-20T23:27:41.482425" elapsed="0.102578">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:27:41.481919" elapsed="0.103131">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<status status="FAIL" start="2026-10-20T23:27:41.481886" elapsed="0.103192">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:27:41.585353" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:27:41.585138" elapsed="0.000268"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:27:41.585123" elapsed="0.000305"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-10-20T23:27:41.480003" elapsed="0.105496">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:27:51.594130" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:27:51.593499" elapsed="0.000772"/>
</branch>
<status status="PASS" start="2026-10-20T23:27:51.593452" elapsed="0.000903"/>
</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-10-20T23:27:51.597572" 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-10-20T23:27:51.596690" elapsed="0.000941"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:27:51.598641" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:27:51.597998" elapsed="0.000698"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-20T23:27:51.598816" elapsed="0.000072"/>
</return>
<msg time="2026-10-20T23:27:51.599148" 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-10-20T23:27:51.595798" elapsed="0.003403"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:27:51.601384" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:27:51.600716" elapsed="0.000726"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-20T23:27:51.601536" elapsed="0.000060"/>
</return>
<msg time="2026-10-20T23:27:51.601838" 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-10-20T23:27:51.599957" elapsed="0.001934"/>
</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-10-20T23:27:51.637712" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:27:51.636881" elapsed="0.000995"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:27:51.640472" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:27:51.640080" elapsed="0.000492">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</status>
</kw>
<msg time="2026-10-20T23:27:51.640868" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:27:51.639376" elapsed="0.001631"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:27:51.643489" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:27:51.642502" elapsed="0.001131"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-20T23:27:51.645747" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-10-20T23:27:51.646134" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-10-20T23:27:51.645296" elapsed="0.000977"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:27:51.648384" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:27:51.647802" elapsed="0.000747"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:27:51.650325" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:27:51.649971" elapsed="0.000414"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:27:51.651016" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:27:51.650629" elapsed="0.000421"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:51.651491" elapsed="0.000030"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:51.651753" elapsed="0.000050"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given `key_value_pairs` and/or `items` to the `dictionary`.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:51.652076" elapsed="0.000038"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-10-20T23:27:51.651265" elapsed="0.000913"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-10-20T23:27:51.651110" elapsed="0.001114"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-20T23:27:51.652283" elapsed="0.000205"/>
</return>
<msg time="2026-10-20T23:27:51.652675" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-20T23:27:51.649408" elapsed="0.003335"/>
</kw>
<status status="PASS" start="2026-10-20T23:27:51.648801" elapsed="0.004012"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:51.653285" elapsed="0.000069"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:27:51.652896" elapsed="0.000516"/>
</branch>
<status status="PASS" start="2026-10-20T23:27:51.648685" elapsed="0.004801"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:27:51.655984" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-10-20T23:27:51.654976" elapsed="0.001109"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:27:51.656166" elapsed="0.000052"/>
</return>
<arg>folder=${folder}</arg>
<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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-10-20T23:27:51.633711" elapsed="0.022881"/>
</kw>
<msg time="2026-10-20T23:27:51.656879" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:27:51.625604" elapsed="0.031327"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:51.661274" elapsed="0.000026"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:51.665463" elapsed="0.000025"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:51.669801" elapsed="0.000033"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:51.670085" elapsed="0.000027"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:51.670281" elapsed="0.000019"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:51.670729" elapsed="0.000065"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:27:51.670579" elapsed="0.000328"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:27:51.670565" elapsed="0.000368"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:51.671093" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:51.671274" elapsed="0.000018"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:51.671472" elapsed="0.000019"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-20T23:27:51.670535" elapsed="0.000986"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-20T23:27:51.670394" 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>Concatenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:51.671698" elapsed="0.000019"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-20T23:27:51.671766" elapsed="0.000026"/>
</return>
<msg time="2026-10-20T23:27:51.671885" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-10-20T23:27:51.624192" elapsed="0.047717"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:27:51.673265" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:27:51.672916" elapsed="0.000525">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-10-20T23:27:51.673671" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:27:51.672535" elapsed="0.001160"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:51.673995" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:27:51.673760" elapsed="0.000287"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:27:51.674750" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:27:51.674265" elapsed="0.000522"/>
</kw>
<status status="PASS" start="2026-10-20T23:27:51.674070" elapsed="0.000751"/>
</branch>
<status status="PASS" start="2026-10-20T23:27:51.673742" elapsed="0.001099"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:27:51.675373" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:27:51.675004" elapsed="0.000394"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-20T23:27:51.675443" elapsed="0.000027"/>
</return>
<msg time="2026-10-20T23:27:51.675567" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:27:51.672215" elapsed="0.003375"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:27:51.676866" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:27:51.676506" elapsed="0.000517">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-10-20T23:27:51.677252" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:27:51.676159" elapsed="0.001116"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-10-20T23:27:51.677462" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-10-20T23:27:51.677357" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-10-20T23:27:51.677339" elapsed="0.000201"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:51.677694" elapsed="0.000052"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the `string` using `separator` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:51.677917" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-10-20T23:27:51.677978" elapsed="0.000015"/>
</return>
<msg time="2026-10-20T23:27:51.678104" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:27:51.675860" elapsed="0.002267"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:27:51.679432" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:27:51.679179" elapsed="0.000296"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:27:51.679904" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:27:51.679664" 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-10-20T23:27:51.686130" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:27:51.686233" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '405'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/ietf-yang-library:modules-state&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:27:51.686443" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:27:51.680233" elapsed="0.006583">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:27:51.680006" elapsed="0.006890">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:51.687075" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:27:51.686926" elapsed="0.000208"/>
</branch>
<status status="FAIL" start="2026-10-20T23:27:51.679988" elapsed="0.007167">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:51.687670" elapsed="0.000026"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-20T23:27:51.687810" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:27:51.687762" elapsed="0.000088"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:27:51.687745" elapsed="0.000126"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:51.688009" elapsed="0.000019"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-20T23:27:51.688071" elapsed="0.000014"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-10-20T23:27:51.678460" elapsed="0.009710">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:27:51.688237" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-10-20T23:27:51.607996" elapsed="0.080344">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-10-20T23:27:51.688590" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:27:51.688430" elapsed="0.000226"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:27:51.688414" elapsed="0.000264"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:27:51.688740" elapsed="0.000016"/>
</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-10-20T23:27:51.606487" elapsed="0.082362">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-10-20T23:27:51.599602" elapsed="0.089307">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-10-20T23:27:51.599341" elapsed="0.089621">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</for>
<arg>${member_index_list}</arg>
<status status="FAIL" start="2026-10-20T23:27:51.594971" elapsed="0.094075">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:27:51.594473" elapsed="0.094621">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<status status="FAIL" start="2026-10-20T23:27:51.594440" elapsed="0.094682">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:27:51.689416" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:27:51.689184" elapsed="0.000285"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:27:51.689168" elapsed="0.000377"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-10-20T23:27:51.592599" elapsed="0.097024">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:28:01.698210" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:28:01.697577" elapsed="0.000807"/>
</branch>
<status status="PASS" start="2026-10-20T23:28:01.697531" elapsed="0.000908"/>
</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-10-20T23:28:01.701625" 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-10-20T23:28:01.700748" elapsed="0.000937"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:28:01.702692" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:28:01.702054" elapsed="0.000692"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-20T23:28:01.702843" elapsed="0.000092"/>
</return>
<msg time="2026-10-20T23:28:01.703170" 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-10-20T23:28:01.699843" elapsed="0.003378"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:28:01.705388" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:28:01.704729" elapsed="0.000715"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-20T23:28:01.705538" elapsed="0.000060"/>
</return>
<msg time="2026-10-20T23:28:01.705812" 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-10-20T23:28:01.703975" elapsed="0.001888"/>
</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-10-20T23:28:01.741803" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:28:01.740959" elapsed="0.001008"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:28:01.744676" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:28:01.744387" elapsed="0.000384">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</status>
</kw>
<msg time="2026-10-20T23:28:01.745069" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:28:01.743614" elapsed="0.001593"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:28:01.747808" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:28:01.746812" elapsed="0.001157"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-20T23:28:01.749982" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-10-20T23:28:01.750409" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-10-20T23:28:01.749535" elapsed="0.001016"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:28:01.752744" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:28:01.752176" elapsed="0.000750"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:28:01.754768" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:28:01.754433" elapsed="0.000393"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:28:01.755554" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:28:01.755093" elapsed="0.000495"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:01.756014" elapsed="0.000030"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:01.756273" elapsed="0.000031"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given `key_value_pairs` and/or `items` to the `dictionary`.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:01.756556" elapsed="0.000027"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-10-20T23:28:01.755813" elapsed="0.000816"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-10-20T23:28:01.755652" elapsed="0.001017"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-20T23:28:01.756728" elapsed="0.000037"/>
</return>
<msg time="2026-10-20T23:28:01.756965" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-20T23:28:01.753844" elapsed="0.003189"/>
</kw>
<status status="PASS" start="2026-10-20T23:28:01.753163" elapsed="0.003924"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:01.757598" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:28:01.757168" elapsed="0.000536"/>
</branch>
<status status="PASS" start="2026-10-20T23:28:01.753061" elapsed="0.004719"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:28:01.760272" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-10-20T23:28:01.759266" elapsed="0.001189"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:28:01.760570" elapsed="0.000072"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-10-20T23:28:01.737803" elapsed="0.023106"/>
</kw>
<msg time="2026-10-20T23:28:01.761298" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:28:01.728446" elapsed="0.032949"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:01.765991" elapsed="0.000025"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:01.770028" 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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:01.774323" elapsed="0.000026"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:01.774543" elapsed="0.000020"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:01.774724" elapsed="0.000018"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:01.775136" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:28:01.774988" elapsed="0.000304"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:28:01.774973" elapsed="0.000365"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:01.775499" elapsed="0.000019"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:01.775679" 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-10-20T23:28:01.775844" elapsed="0.000018"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-20T23:28:01.774944" elapsed="0.000960"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-20T23:28:01.774791" elapsed="0.001138"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Concatenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:01.776082" elapsed="0.000018"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-20T23:28:01.776149" elapsed="0.000015"/>
</return>
<msg time="2026-10-20T23:28:01.776256" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-10-20T23:28:01.727018" elapsed="0.049262"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:28:01.777623" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:28:01.777246" elapsed="0.000533">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-10-20T23:28:01.778023" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:28:01.776919" elapsed="0.001129"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:01.778361" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:28:01.778113" elapsed="0.000302"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:28:01.779111" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:28:01.778631" elapsed="0.000505"/>
</kw>
<status status="PASS" start="2026-10-20T23:28:01.778438" elapsed="0.000730"/>
</branch>
<status status="PASS" start="2026-10-20T23:28:01.778095" elapsed="0.001093"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:28:01.782185" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:28:01.781781" elapsed="0.000432"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-20T23:28:01.782260" elapsed="0.000031"/>
</return>
<msg time="2026-10-20T23:28:01.783456" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:28:01.776600" elapsed="0.006882"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:28:01.786001" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:28:01.785543" elapsed="0.000623">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-10-20T23:28:01.786417" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:28:01.784124" elapsed="0.002318"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-10-20T23:28:01.786622" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-10-20T23:28:01.786514" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-10-20T23:28:01.786495" elapsed="0.000208"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:01.786862" elapsed="0.000078"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the `string` using `separator` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:01.787105" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-10-20T23:28:01.787167" elapsed="0.000015"/>
</return>
<msg time="2026-10-20T23:28:01.787414" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:28:01.783748" elapsed="0.003724"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:28:01.788819" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:28:01.788584" elapsed="0.000282"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:28:01.789290" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:28:01.789071" 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-10-20T23:28:01.796139" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:28:01.796245" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '405'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/ietf-yang-library:modules-state&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:28:01.796461" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:28:01.789644" elapsed="0.007252">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:28:01.789412" elapsed="0.007563">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:01.797164" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:28:01.797007" elapsed="0.000216"/>
</branch>
<status status="FAIL" start="2026-10-20T23:28:01.789395" elapsed="0.007850">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:01.797793" elapsed="0.000026"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-20T23:28:01.797936" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:28:01.797900" elapsed="0.000077"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:28:01.797870" elapsed="0.000128"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:01.798140" elapsed="0.000019"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-20T23:28:01.798203" elapsed="0.000014"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-10-20T23:28:01.787831" elapsed="0.010486">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:28:01.798386" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-10-20T23:28:01.710822" elapsed="0.087657">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:01.798727" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:28:01.798566" elapsed="0.000226"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:28:01.798549" elapsed="0.000265"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:28:01.798892" elapsed="0.000017"/>
</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-10-20T23:28:01.709360" elapsed="0.089637">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-10-20T23:28:01.703620" elapsed="0.095437">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-10-20T23:28:01.703364" elapsed="0.095750">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</for>
<arg>${member_index_list}</arg>
<status status="FAIL" start="2026-10-20T23:28:01.699056" elapsed="0.100146">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:28:01.698556" elapsed="0.100695">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<status status="FAIL" start="2026-10-20T23:28:01.698523" elapsed="0.100756">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:28:01.799560" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:28:01.799359" elapsed="0.000253"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:28:01.799342" elapsed="0.000292"/>
</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-10-20T23:28:01.696705" elapsed="0.103005">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:28:11.808435" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:28:11.807765" elapsed="0.000811"/>
</branch>
<status status="PASS" start="2026-10-20T23:28:11.807720" elapsed="0.000911"/>
</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-10-20T23:28:11.811779" 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-10-20T23:28:11.810920" elapsed="0.000918"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:28:11.812843" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:28:11.812209" elapsed="0.000689"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-20T23:28:11.813015" elapsed="0.000070"/>
</return>
<msg time="2026-10-20T23:28:11.813343" 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-10-20T23:28:11.810051" elapsed="0.003347"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:28:11.815539" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:28:11.814880" elapsed="0.000715"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-20T23:28:11.815690" elapsed="0.000059"/>
</return>
<msg time="2026-10-20T23:28:11.815963" 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-10-20T23:28:11.814119" elapsed="0.001916"/>
</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-10-20T23:28:11.854143" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:28:11.853223" elapsed="0.001072"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:28:11.857460" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:28:11.856819" elapsed="0.000745">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</status>
</kw>
<msg time="2026-10-20T23:28:11.857846" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:28:11.856068" elapsed="0.001937"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:28:11.860619" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:28:11.859610" elapsed="0.001153"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-20T23:28:11.862828" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-10-20T23:28:11.863213" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-10-20T23:28:11.862384" elapsed="0.001087"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:28:11.865694" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:28:11.865003" elapsed="0.000857"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:28:11.867803" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:28:11.867457" elapsed="0.000404"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:28:11.868526" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:28:11.868128" elapsed="0.000434"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:11.868961" 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-10-20T23:28:11.869240" elapsed="0.000032"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given `key_value_pairs` and/or `items` to the `dictionary`.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:11.869588" elapsed="0.000029"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-10-20T23:28:11.868779" elapsed="0.000885"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-10-20T23:28:11.868623" elapsed="0.001081"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-20T23:28:11.869760" elapsed="0.000036"/>
</return>
<msg time="2026-10-20T23:28:11.869993" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-20T23:28:11.866754" elapsed="0.003308"/>
</kw>
<status status="PASS" start="2026-10-20T23:28:11.866116" elapsed="0.004000"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:11.870634" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:28:11.870196" elapsed="0.000548"/>
</branch>
<status status="PASS" start="2026-10-20T23:28:11.866012" elapsed="0.004811"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:28:11.873414" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-10-20T23:28:11.872365" elapsed="0.001193"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:28:11.873674" elapsed="0.000076"/>
</return>
<arg>folder=${folder}</arg>
<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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-10-20T23:28:11.849704" elapsed="0.024318"/>
</kw>
<msg time="2026-10-20T23:28:11.874456" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:28:11.838873" elapsed="0.035656"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:11.879428" elapsed="0.000026"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:11.883516" elapsed="0.000025"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:11.887657" elapsed="0.000025"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:11.887872" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:11.888068" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:11.888502" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:28:11.888343" elapsed="0.000319"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:28:11.888302" elapsed="0.000387"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:11.888850" elapsed="0.000019"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:11.889045" 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-10-20T23:28:11.889212" elapsed="0.000019"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-20T23:28:11.888274" elapsed="0.000987"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-20T23:28:11.888137" elapsed="0.001148"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Concatenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:11.889469" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-20T23:28:11.889539" elapsed="0.000015"/>
</return>
<msg time="2026-10-20T23:28:11.889647" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-10-20T23:28:11.837475" elapsed="0.052196"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:28:11.891051" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:28:11.890681" elapsed="0.000527">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-10-20T23:28:11.891469" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:28:11.890337" elapsed="0.001158"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:11.891786" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:28:11.891562" elapsed="0.000278"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:28:11.892580" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:28:11.892073" elapsed="0.000532"/>
</kw>
<status status="PASS" start="2026-10-20T23:28:11.891864" elapsed="0.000774"/>
</branch>
<status status="PASS" start="2026-10-20T23:28:11.891545" elapsed="0.001113"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:28:11.893182" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:28:11.892821" elapsed="0.000387"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-20T23:28:11.893254" elapsed="0.000028"/>
</return>
<msg time="2026-10-20T23:28:11.893420" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:28:11.889991" elapsed="0.003453"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:28:11.894724" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:28:11.894375" elapsed="0.000502">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-10-20T23:28:11.895125" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:28:11.894018" elapsed="0.001132"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-10-20T23:28:11.895405" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-10-20T23:28:11.895223" elapsed="0.000243"/>
</branch>
<status status="PASS" start="2026-10-20T23:28:11.895201" 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-10-20T23:28:11.895644" elapsed="0.000052"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the `string` using `separator` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:11.895859" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-10-20T23:28:11.895921" elapsed="0.000015"/>
</return>
<msg time="2026-10-20T23:28:11.896065" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:28:11.893698" elapsed="0.002391"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:28:11.897415" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:28:11.897156" elapsed="0.000304"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:28:11.897871" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:28:11.897650" elapsed="0.000262"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:28:11.904753" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:28:11.904861" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '405'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/ietf-yang-library:modules-state&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:28:11.905064" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:28:11.898217" elapsed="0.007298">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:28:11.897973" elapsed="0.007624">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:11.905782" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:28:11.905629" elapsed="0.000213"/>
</branch>
<status status="FAIL" start="2026-10-20T23:28:11.897956" elapsed="0.007907">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:11.906412" elapsed="0.000026"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-20T23:28:11.906537" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:28:11.906504" elapsed="0.000073"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:28:11.906488" elapsed="0.000109"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:11.906734" elapsed="0.000020"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-20T23:28:11.906798" elapsed="0.000014"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-10-20T23:28:11.896439" elapsed="0.010458">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:28:11.906988" 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-10-20T23:28:11.821043" elapsed="0.086048">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:11.907380" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:28:11.907176" elapsed="0.000274"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:28:11.907160" elapsed="0.000312"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:28:11.907535" elapsed="0.000015"/>
</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-10-20T23:28:11.819539" elapsed="0.088092">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-10-20T23:28:11.813762" elapsed="0.093929">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-10-20T23:28:11.813510" elapsed="0.094233">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</for>
<arg>${member_index_list}</arg>
<status status="FAIL" start="2026-10-20T23:28:11.809240" elapsed="0.098586">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:28:11.808745" elapsed="0.099128">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<status status="FAIL" start="2026-10-20T23:28:11.808713" elapsed="0.099187">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:28:11.908172" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:28:11.907961" elapsed="0.000264"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:28:11.907945" elapsed="0.000302"/>
</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-10-20T23:28:11.806832" elapsed="0.101510">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:28:21.916887" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:28:21.916183" elapsed="0.000846"/>
</branch>
<status status="PASS" start="2026-10-20T23:28:21.916137" elapsed="0.001006"/>
</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-10-20T23:28:21.920400" 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-10-20T23:28:21.919471" elapsed="0.000993"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:28:21.921554" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:28:21.920811" elapsed="0.000799"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-20T23:28:21.921706" elapsed="0.000069"/>
</return>
<msg time="2026-10-20T23:28:21.922005" 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-10-20T23:28:21.918584" elapsed="0.003472"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:28:21.924231" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:28:21.923604" elapsed="0.000684"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-20T23:28:21.924414" elapsed="0.000061"/>
</return>
<msg time="2026-10-20T23:28:21.924691" 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-10-20T23:28:21.922810" elapsed="0.001958"/>
</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-10-20T23:28:21.961115" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:28:21.960240" elapsed="0.001025"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:28:21.964273" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:28:21.963905" elapsed="0.000525">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</status>
</kw>
<msg time="2026-10-20T23:28:21.964756" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:28:21.962870" elapsed="0.002037"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:28:21.968129" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:28:21.966815" elapsed="0.001478"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-20T23:28:21.970589" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-10-20T23:28:21.970971" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-10-20T23:28:21.969925" elapsed="0.001217"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:28:21.973367" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:28:21.972771" elapsed="0.000766"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:28:21.975468" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:28:21.975063" elapsed="0.000463"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:28:21.976153" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:28:21.975773" elapsed="0.000415"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:21.976678" elapsed="0.000029"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:21.976937" elapsed="0.000031"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given `key_value_pairs` and/or `items` to the `dictionary`.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:21.977213" elapsed="0.000028"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-10-20T23:28:21.976495" elapsed="0.000791"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-10-20T23:28:21.976248" elapsed="0.001102"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-20T23:28:21.977410" elapsed="0.000039"/>
</return>
<msg time="2026-10-20T23:28:21.977629" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-20T23:28:21.974508" elapsed="0.003189"/>
</kw>
<status status="PASS" start="2026-10-20T23:28:21.973775" elapsed="0.003976"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:21.978249" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:28:21.977834" elapsed="0.000554"/>
</branch>
<status status="PASS" start="2026-10-20T23:28:21.973670" elapsed="0.004798"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:28:21.981158" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-10-20T23:28:21.980053" elapsed="0.001217"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:28:21.981384" 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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-10-20T23:28:21.956954" elapsed="0.024666"/>
</kw>
<msg time="2026-10-20T23:28:21.981905" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:28:21.947537" elapsed="0.034420"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:21.987975" elapsed="0.000026"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:21.992057" elapsed="0.000025"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:21.996171" elapsed="0.000025"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:21.996428" elapsed="0.000026"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:21.996670" elapsed="0.000026"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:21.997190" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:28:21.996984" elapsed="0.000397"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:28:21.996965" elapsed="0.000444"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:21.997585" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:21.997791" 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-10-20T23:28:21.997997" elapsed="0.000025"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-20T23:28:21.996929" elapsed="0.001133"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-20T23:28:21.996758" elapsed="0.001347"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Concatenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:21.998341" elapsed="0.000027"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-20T23:28:21.998437" elapsed="0.000022"/>
</return>
<msg time="2026-10-20T23:28:21.998601" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-10-20T23:28:21.946129" elapsed="0.052508"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:28:22.000472" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:28:21.999958" elapsed="0.000723">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-10-20T23:28:22.000923" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:28:21.999513" elapsed="0.001436"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:22.001272" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:28:22.001016" elapsed="0.000331"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:28:22.002072" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:28:22.001590" elapsed="0.000521"/>
</kw>
<status status="PASS" start="2026-10-20T23:28:22.001372" elapsed="0.000772"/>
</branch>
<status status="PASS" start="2026-10-20T23:28:22.000998" elapsed="0.001166"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:28:22.002748" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:28:22.002348" elapsed="0.000434"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-20T23:28:22.002843" elapsed="0.000037"/>
</return>
<msg time="2026-10-20T23:28:22.003023" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:28:21.999054" elapsed="0.004003"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:28:22.004855" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:28:22.004414" elapsed="0.000598">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-10-20T23:28:22.005297" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:28:22.003880" elapsed="0.001471"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-10-20T23:28:22.005525" elapsed="0.000032"/>
</return>
<status status="PASS" start="2026-10-20T23:28:22.005419" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-10-20T23:28:22.005401" elapsed="0.000213"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:22.005770" elapsed="0.000054"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the `string` using `separator` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:22.005988" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-10-20T23:28:22.006048" elapsed="0.000015"/>
</return>
<msg time="2026-10-20T23:28:22.006193" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:28:22.003454" elapsed="0.002763"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:28:22.007556" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:28:22.007295" elapsed="0.000307"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:28:22.008017" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:28:22.007792" elapsed="0.000267"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:28:22.014510" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:28:22.014611" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '405'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/ietf-yang-library:modules-state&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:28:22.014804" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:28:22.008423" elapsed="0.006761">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:28:22.008136" elapsed="0.007125">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:22.015479" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:28:22.015291" elapsed="0.000248"/>
</branch>
<status status="FAIL" start="2026-10-20T23:28:22.008116" elapsed="0.007445">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:22.016050" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-20T23:28:22.016197" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:28:22.016164" elapsed="0.000073"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:28:22.016140" 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-10-20T23:28:22.016415" elapsed="0.000020"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-20T23:28:22.016479" elapsed="0.000014"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-10-20T23:28:22.006561" elapsed="0.010018">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:28:22.016645" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-10-20T23:28:21.929711" elapsed="0.087038">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:22.017001" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:28:22.016842" elapsed="0.000226"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:28:22.016817" elapsed="0.000289"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:28:22.017169" elapsed="0.000015"/>
</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-10-20T23:28:21.928223" elapsed="0.089041">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-10-20T23:28:21.922475" elapsed="0.094871">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-10-20T23:28:21.922191" elapsed="0.095209">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</for>
<arg>${member_index_list}</arg>
<status status="FAIL" start="2026-10-20T23:28:21.917774" elapsed="0.099711">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:28:21.917262" elapsed="0.100272">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<status status="FAIL" start="2026-10-20T23:28:21.917228" elapsed="0.100335">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:28:22.017823" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:28:22.017625" elapsed="0.000252"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:28:22.017609" elapsed="0.000290"/>
</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-10-20T23:28:21.915340" elapsed="0.102633">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:28:32.026664" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:28:32.025999" elapsed="0.000815"/>
</branch>
<status status="PASS" start="2026-10-20T23:28:32.025952" elapsed="0.000918"/>
</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-10-20T23:28:32.030110" 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-10-20T23:28:32.029260" elapsed="0.000911"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:28:32.031171" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:28:32.030566" elapsed="0.000684"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-20T23:28:32.031377" elapsed="0.000070"/>
</return>
<msg time="2026-10-20T23:28:32.031682" 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-10-20T23:28:32.028294" elapsed="0.003441"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:28:32.034036" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:28:32.033419" elapsed="0.000674"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-20T23:28:32.034189" elapsed="0.000081"/>
</return>
<msg time="2026-10-20T23:28:32.034521" 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-10-20T23:28:32.032487" elapsed="0.002088"/>
</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-10-20T23:28:32.070839" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:28:32.069972" elapsed="0.001010"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:28:32.073811" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:28:32.073479" elapsed="0.000447">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</status>
</kw>
<msg time="2026-10-20T23:28:32.074223" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:28:32.072753" elapsed="0.001711"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:28:32.077044" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:28:32.075979" elapsed="0.001211"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-20T23:28:32.079612" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-10-20T23:28:32.080029" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-10-20T23:28:32.079070" elapsed="0.001113"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:28:32.082678" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:28:32.081967" elapsed="0.000896"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:28:32.084916" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:28:32.084556" elapsed="0.000423"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:28:32.085664" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:28:32.085252" elapsed="0.000449"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:32.086152" elapsed="0.000030"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:32.086513" elapsed="0.000034"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given `key_value_pairs` and/or `items` to the `dictionary`.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:32.086780" elapsed="0.000030"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-10-20T23:28:32.085965" elapsed="0.000906"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-10-20T23:28:32.085783" elapsed="0.001130"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-20T23:28:32.086979" elapsed="0.000051"/>
</return>
<msg time="2026-10-20T23:28:32.087239" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-20T23:28:32.083828" elapsed="0.003510"/>
</kw>
<status status="PASS" start="2026-10-20T23:28:32.083129" elapsed="0.004270"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:32.087909" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:28:32.087485" elapsed="0.000536"/>
</branch>
<status status="PASS" start="2026-10-20T23:28:32.083018" elapsed="0.005085"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:28:32.090612" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-10-20T23:28:32.089803" elapsed="0.000917"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:28:32.090805" elapsed="0.000066"/>
</return>
<arg>folder=${folder}</arg>
<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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-10-20T23:28:32.066767" elapsed="0.024296"/>
</kw>
<msg time="2026-10-20T23:28:32.091390" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:28:32.057402" elapsed="0.034049"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:32.096043" 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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:32.100509" 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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:32.104794" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:32.105045" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:32.105244" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:32.105670" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:28:32.105518" elapsed="0.000320"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:28:32.105504" elapsed="0.000364"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:32.106033" 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-10-20T23:28:32.106229" 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-10-20T23:28:32.106425" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-20T23:28:32.105474" elapsed="0.001003"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-20T23:28:32.105331" elapsed="0.001171"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Concatenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:32.106657" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-20T23:28:32.106728" elapsed="0.000015"/>
</return>
<msg time="2026-10-20T23:28:32.106849" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-10-20T23:28:32.055885" elapsed="0.050990"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:28:32.108285" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:28:32.107883" elapsed="0.000620">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-10-20T23:28:32.108739" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:28:32.107532" elapsed="0.001232"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:32.109089" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:28:32.108839" elapsed="0.000305"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:28:32.109939" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:28:32.109423" elapsed="0.000542"/>
</kw>
<status status="PASS" start="2026-10-20T23:28:32.109167" elapsed="0.000830"/>
</branch>
<status status="PASS" start="2026-10-20T23:28:32.108815" elapsed="0.001204"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:28:32.110639" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:28:32.110201" elapsed="0.000463"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-20T23:28:32.110711" elapsed="0.000027"/>
</return>
<msg time="2026-10-20T23:28:32.110849" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:28:32.107190" elapsed="0.003686"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:28:32.112326" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:28:32.111876" elapsed="0.000612">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-10-20T23:28:32.112723" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:28:32.111494" elapsed="0.001253"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-10-20T23:28:32.112938" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-10-20T23:28:32.112819" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-10-20T23:28:32.112798" elapsed="0.000222"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:32.113178" elapsed="0.000070"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the `string` using `separator` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:32.113472" elapsed="0.000023"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-10-20T23:28:32.113538" elapsed="0.000015"/>
</return>
<msg time="2026-10-20T23:28:32.113668" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:28:32.111135" elapsed="0.002557"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:28:32.115040" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:28:32.114792" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:28:32.115537" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:28:32.115290" 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-10-20T23:28:32.121102" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:28:32.121219" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '405'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/ietf-yang-library:modules-state&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:28:32.121428" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:28:32.115915" elapsed="0.005867">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:28:32.115641" elapsed="0.006218">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:32.122042" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:28:32.121890" elapsed="0.000212"/>
</branch>
<status status="FAIL" start="2026-10-20T23:28:32.115623" elapsed="0.006502">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:32.122673" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-20T23:28:32.122799" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:28:32.122765" elapsed="0.000074"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:28:32.122748" elapsed="0.000119"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:32.123022" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-20T23:28:32.123088" 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-10-20T23:28:32.114030" elapsed="0.009160">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:28:32.123277" elapsed="0.000017"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-10-20T23:28:32.039531" elapsed="0.083863">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:32.123648" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:28:32.123483" elapsed="0.000277"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:28:32.123465" elapsed="0.000339"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:28:32.123911" elapsed="0.000018"/>
</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-10-20T23:28:32.038059" elapsed="0.085954">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-10-20T23:28:32.032102" elapsed="0.091973">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-10-20T23:28:32.031849" elapsed="0.092278">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</for>
<arg>${member_index_list}</arg>
<status status="FAIL" start="2026-10-20T23:28:32.027510" elapsed="0.096714">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:28:32.026983" elapsed="0.097299">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<status status="FAIL" start="2026-10-20T23:28:32.026951" elapsed="0.097423">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:28:32.124652" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:28:32.124444" elapsed="0.000262"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:28:32.124428" elapsed="0.000301"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-10-20T23:28:32.025085" elapsed="0.099722">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:28:42.133431" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:28:42.132762" elapsed="0.000811"/>
</branch>
<status status="PASS" start="2026-10-20T23:28:42.132717" elapsed="0.000910"/>
</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-10-20T23:28:42.136853" 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-10-20T23:28:42.135979" elapsed="0.000935"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:28:42.137927" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:28:42.137260" elapsed="0.000723"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-20T23:28:42.138080" elapsed="0.000070"/>
</return>
<msg time="2026-10-20T23:28:42.138432" 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-10-20T23:28:42.135038" elapsed="0.003448"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:28:42.140635" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:28:42.139981" elapsed="0.000710"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-20T23:28:42.140784" elapsed="0.000060"/>
</return>
<msg time="2026-10-20T23:28:42.141061" 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-10-20T23:28:42.139192" elapsed="0.001921"/>
</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-10-20T23:28:42.177858" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:28:42.176964" elapsed="0.001056"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:28:42.180884" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:28:42.180583" elapsed="0.000401">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</status>
</kw>
<msg time="2026-10-20T23:28:42.181268" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:28:42.179781" elapsed="0.001680"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:28:42.184274" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:28:42.183239" elapsed="0.001300"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-20T23:28:42.186601" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-10-20T23:28:42.186985" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-10-20T23:28:42.186035" elapsed="0.001093"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:28:42.189370" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:28:42.188779" elapsed="0.000763"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:28:42.191447" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:28:42.191068" elapsed="0.000437"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:28:42.192107" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:28:42.191752" elapsed="0.000389"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:42.192632" elapsed="0.000029"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:42.192889" elapsed="0.000031"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given `key_value_pairs` and/or `items` to the `dictionary`.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:42.193143" elapsed="0.000027"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-10-20T23:28:42.192447" elapsed="0.000768"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-10-20T23:28:42.192205" elapsed="0.001050"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-20T23:28:42.193384" elapsed="0.000042"/>
</return>
<msg time="2026-10-20T23:28:42.193609" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-20T23:28:42.190519" elapsed="0.003157"/>
</kw>
<status status="PASS" start="2026-10-20T23:28:42.189782" elapsed="0.003947"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:42.194201" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:28:42.193811" elapsed="0.000494"/>
</branch>
<status status="PASS" start="2026-10-20T23:28:42.189677" elapsed="0.004746"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:28:42.196953" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-10-20T23:28:42.195899" elapsed="0.001218"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:28:42.197226" 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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-10-20T23:28:42.173640" elapsed="0.023871"/>
</kw>
<msg time="2026-10-20T23:28:42.197792" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:28:42.163874" elapsed="0.033971"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:42.202211" 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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:42.206500" 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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:42.210553" elapsed="0.000025"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:42.210774" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:42.210959" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:42.211451" elapsed="0.000067"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:28:42.211231" elapsed="0.000440"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:28:42.211212" elapsed="0.000496"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:42.211878" 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-10-20T23:28:42.212067" 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-10-20T23:28:42.212232" elapsed="0.000019"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-20T23:28:42.211172" elapsed="0.001109"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-20T23:28:42.211028" elapsed="0.001294"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Concatenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:42.212490" elapsed="0.000019"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-20T23:28:42.212558" elapsed="0.000016"/>
</return>
<msg time="2026-10-20T23:28:42.212667" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-10-20T23:28:42.162356" elapsed="0.050335"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:28:42.214010" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:28:42.213660" elapsed="0.000506">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-10-20T23:28:42.214437" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:28:42.213321" elapsed="0.001140"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:42.214749" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:28:42.214527" elapsed="0.000274"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:28:42.215510" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:28:42.215016" elapsed="0.000519"/>
</kw>
<status status="PASS" start="2026-10-20T23:28:42.214824" elapsed="0.000744"/>
</branch>
<status status="PASS" start="2026-10-20T23:28:42.214509" elapsed="0.001079"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:28:42.216097" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:28:42.215753" elapsed="0.000369"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-20T23:28:42.216168" elapsed="0.000027"/>
</return>
<msg time="2026-10-20T23:28:42.216293" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:28:42.212997" elapsed="0.003354"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:28:42.217648" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:28:42.217263" elapsed="0.000542">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-10-20T23:28:42.218037" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:28:42.216911" elapsed="0.001151"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-10-20T23:28:42.218232" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-10-20T23:28:42.218128" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-10-20T23:28:42.218111" elapsed="0.000269"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:42.218553" elapsed="0.000053"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the `string` using `separator` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:42.218772" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-10-20T23:28:42.218834" elapsed="0.000015"/>
</return>
<msg time="2026-10-20T23:28:42.218963" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:28:42.216610" elapsed="0.002378"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:28:42.220346" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:28:42.220063" elapsed="0.000332"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:28:42.220815" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:28:42.220589" elapsed="0.000267"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:28:42.227791" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:28:42.227895" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '405'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/ietf-yang-library:modules-state&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:28:42.228081" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:28:42.221147" elapsed="0.007354">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:28:42.220916" elapsed="0.007662">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:42.228760" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:28:42.228608" elapsed="0.000210"/>
</branch>
<status status="FAIL" start="2026-10-20T23:28:42.220899" elapsed="0.007941">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:42.229380" elapsed="0.000034"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-20T23:28:42.229515" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:28:42.229481" elapsed="0.000073"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:28:42.229465" elapsed="0.000109"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:42.229712" elapsed="0.000020"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-20T23:28:42.229777" elapsed="0.000016"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-10-20T23:28:42.219342" elapsed="0.010537">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:28:42.229944" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-10-20T23:28:42.146054" elapsed="0.083978">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:42.230273" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:28:42.230114" elapsed="0.000255"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:28:42.230098" elapsed="0.000294"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:28:42.230454" elapsed="0.000015"/>
</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-10-20T23:28:42.144591" elapsed="0.085957">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-10-20T23:28:42.138856" elapsed="0.091752">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-10-20T23:28:42.138601" elapsed="0.092059">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</for>
<arg>${member_index_list}</arg>
<status status="FAIL" start="2026-10-20T23:28:42.134226" elapsed="0.096522">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:28:42.133743" elapsed="0.097065">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<status status="FAIL" start="2026-10-20T23:28:42.133710" elapsed="0.097139">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:28:42.231117" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:28:42.230916" elapsed="0.000254"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:28:42.230900" elapsed="0.000292"/>
</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-10-20T23:28:42.131882" elapsed="0.099383">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:28:52.240574" elapsed="0.000061"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:28:52.239850" elapsed="0.000875"/>
</branch>
<status status="PASS" start="2026-10-20T23:28:52.239801" elapsed="0.000979"/>
</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-10-20T23:28:52.244126" 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-10-20T23:28:52.243198" elapsed="0.000991"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:28:52.245258" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:28:52.244627" elapsed="0.000720"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-20T23:28:52.245458" elapsed="0.000116"/>
</return>
<msg time="2026-10-20T23:28:52.245839" 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-10-20T23:28:52.242257" elapsed="0.003637"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:28:52.248169" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:28:52.247535" elapsed="0.000692"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-20T23:28:52.248357" elapsed="0.000066"/>
</return>
<msg time="2026-10-20T23:28:52.248700" 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-10-20T23:28:52.246704" elapsed="0.002051"/>
</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-10-20T23:28:52.285239" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:28:52.284356" elapsed="0.001057"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:28:52.288233" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:28:52.287926" elapsed="0.000435">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</status>
</kw>
<msg time="2026-10-20T23:28:52.288687" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:28:52.286951" elapsed="0.001879"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:28:52.291656" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:28:52.290560" elapsed="0.001240"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-20T23:28:52.293984" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-10-20T23:28:52.294390" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-10-20T23:28:52.293511" elapsed="0.001052"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:28:52.296840" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:28:52.296222" elapsed="0.000784"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:28:52.299101" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:28:52.298761" elapsed="0.000399"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:28:52.299975" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given `items`.</doc>
<status status="PASS" start="2026-10-20T23:28:52.299543" elapsed="0.000474"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:52.300571" elapsed="0.000032"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:52.300838" elapsed="0.000032"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given `key_value_pairs` and/or `items` to the `dictionary`.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:52.301100" elapsed="0.000027"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-10-20T23:28:52.300303" elapsed="0.000869"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-10-20T23:28:52.300102" elapsed="0.001110"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-20T23:28:52.301267" elapsed="0.000076"/>
</return>
<msg time="2026-10-20T23:28:52.301567" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-20T23:28:52.298150" elapsed="0.003489"/>
</kw>
<status status="PASS" start="2026-10-20T23:28:52.297246" elapsed="0.004450"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:52.302179" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:28:52.301781" elapsed="0.000519"/>
</branch>
<status status="PASS" start="2026-10-20T23:28:52.297140" elapsed="0.005271"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:28:52.304241" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-10-20T23:28:52.303528" elapsed="0.000831"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:28:52.304452" elapsed="0.000075"/>
</return>
<arg>folder=${folder}</arg>
<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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-10-20T23:28:52.281064" elapsed="0.023650"/>
</kw>
<msg time="2026-10-20T23:28:52.304993" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:28:52.272278" elapsed="0.032767"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:52.309547" elapsed="0.000033"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:52.313761" 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-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:52.317888" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:52.318114" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:52.318301" elapsed="0.000034"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:52.318744" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:28:52.318595" elapsed="0.000306"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:28:52.318580" elapsed="0.000348"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:52.319089" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:52.319269" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:52.319479" elapsed="0.000023"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-20T23:28:52.318549" elapsed="0.000986"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-20T23:28:52.318387" elapsed="0.001172"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Concatenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:52.319713" elapsed="0.000019"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-20T23:28:52.319781" elapsed="0.000015"/>
</return>
<msg time="2026-10-20T23:28:52.319890" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-10-20T23:28:52.270822" elapsed="0.049092"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:28:52.321257" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:28:52.320904" elapsed="0.000550">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-10-20T23:28:52.321709" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:28:52.320569" elapsed="0.001165"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:52.322024" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:28:52.321800" elapsed="0.000277"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:28:52.322842" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:28:52.322341" elapsed="0.000526"/>
</kw>
<status status="PASS" start="2026-10-20T23:28:52.322100" elapsed="0.000800"/>
</branch>
<status status="PASS" start="2026-10-20T23:28:52.321782" elapsed="0.001138"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:28:52.323460" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:28:52.323082" elapsed="0.000417"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-20T23:28:52.323547" elapsed="0.000028"/>
</return>
<msg time="2026-10-20T23:28:52.323676" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:28:52.320222" elapsed="0.003478"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:28:52.324988" level="FAIL">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given `path` points to an existing file.</doc>
<status status="FAIL" start="2026-10-20T23:28:52.324640" elapsed="0.000500">File '/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-10-20T23:28:52.325391" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-10-20T23:28:52.324257" elapsed="0.001159"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-10-20T23:28:52.325616" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-10-20T23:28:52.325510" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-10-20T23:28:52.325489" elapsed="0.000207"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:52.325849" elapsed="0.000058"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the `string` using `separator` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:52.326070" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-10-20T23:28:52.326132" elapsed="0.000016"/>
</return>
<msg time="2026-10-20T23:28:52.326262" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-10-20T23:28:52.323954" elapsed="0.002332"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:28:52.327670" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:28:52.327405" elapsed="0.000308"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:28:52.328120" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:28:52.327901" elapsed="0.000260"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:28:52.334754" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:28:52.334860" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '405'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/ietf-yang-library:modules-state&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:28:52.335050" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:28:52.328535" elapsed="0.006943">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:28:52.328221" elapsed="0.007339">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:52.335744" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:28:52.335591" elapsed="0.000212"/>
</branch>
<status status="FAIL" start="2026-10-20T23:28:52.328204" elapsed="0.007621">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:52.336352" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-20T23:28:52.336505" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:28:52.336452" elapsed="0.000096"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:28:52.336429" elapsed="0.000139"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:52.336710" elapsed="0.000020"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-20T23:28:52.336773" 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-10-20T23:28:52.326650" elapsed="0.010223">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:28:52.336939" elapsed="0.000014"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-10-20T23:28:52.253818" elapsed="0.083208">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:52.337270" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:28:52.337110" elapsed="0.000248"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:28:52.337094" elapsed="0.000297"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:28:52.337478" elapsed="0.000021"/>
</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-10-20T23:28:52.252267" elapsed="0.085317">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-10-20T23:28:52.246271" elapsed="0.091373">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-10-20T23:28:52.246013" elapsed="0.091682">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</for>
<arg>${member_index_list}</arg>
<status status="FAIL" start="2026-10-20T23:28:52.241431" elapsed="0.096350">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:28:52.240900" elapsed="0.096931">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<status status="FAIL" start="2026-10-20T23:28:52.240867" elapsed="0.096992">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223: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-10-20T23:28:52.338170" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:28:52.337922" elapsed="0.000318"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:28:52.337905" elapsed="0.000364"/>
</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-10-20T23:28:52.238900" elapsed="0.099507">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<msg time="2026-10-20T23:28:52.338541" level="FAIL">Keyword 'Verify_Members_Are_Ready' failed after retrying for 6 minutes. The last error was: HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${timeout}</arg>
<arg>10s</arg>
<arg>Verify_Members_Are_Ready</arg>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-10-20T23:22:47.491653" elapsed="364.846978">Keyword 'Verify_Members_Are_Ready' failed after retrying for 6 minutes. The last error was: HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement" type="TEARDOWN">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:28:52.340098" 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-10-20T23:28:52.339763" elapsed="0.000360"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:28:52.340597" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:28:52.340274" elapsed="0.000348"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-20T23:28:52.340663" elapsed="0.000028"/>
</return>
<msg time="2026-10-20T23:28:52.340792" 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-10-20T23:28:52.339345" elapsed="0.001470"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-10-20T23:28:52.341791" level="INFO">${member_ip} = 10.30.170.223</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="PASS" start="2026-10-20T23:28:52.341573" elapsed="0.000244"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:28:52.342630" level="INFO">index=5
host=10.30.170.219
alias=None
port=22
timeout=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-10-20T23:28:52.342737" level="INFO">${current_connection} = index=5
host=10.30.170.219
alias=None
port=22
timeout=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-10-20T23:28:52.342499" 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 or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:52.345440" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:28:52.345156" elapsed="0.000360"/>
</branch>
<status status="PASS" start="2026-10-20T23:28:52.345137" elapsed="0.000403"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:28:52.345844" level="INFO">index=5
host=10.30.170.219
alias=None
port=22
timeout=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-10-20T23:28:52.345936" level="INFO">${current_ssh_connection} = index=5
host=10.30.170.219
alias=None
port=22
timeout=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-10-20T23:28:52.345743" elapsed="0.000250"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:28:52.346538" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.170.223" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:28:52.346193" elapsed="0.000390"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:28:52.347098" level="INFO">${conn_id} = 18</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-20T23:28:52.346771" elapsed="0.000351"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-20T23:28:52.348599" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:28:52.348740" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-20T23:28:52.347779" elapsed="0.000999"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:28:52.349014" elapsed="0.000693"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:28:52.352099" level="INFO">Logging into '10.30.170.223:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:28:52.954967" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-194-generic x86_64)

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

 System information as of Tue Oct 20 23:28:52 UTC 2026

  System load:  0.04               Processes:             118
  Usage of /:   14.0% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.170.223
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Tue Oct 20 23:22:47 2026 from 10.30.170.114
[?2004h[jenkins@releng-34016-79-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-10-20T23:28:52.351640" elapsed="0.603662"/>
</kw>
<msg time="2026-10-20T23:28:52.955505" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:28:52.349996" elapsed="0.605686"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-10-20T23:28:52.347345" elapsed="0.608717"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:28:52.956748" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-10-20T23:28:52.969326" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-10-20T23:28:52.969502" level="INFO">${stdout} = </msg>
<msg time="2026-10-20T23:28:52.969559" 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-10-20T23:28:52.956537" elapsed="0.013051"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:28:52.969822" elapsed="0.000333"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:28:52.970975" 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-10-20T23:28:52.970597" elapsed="0.000437"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:28:52.971331" elapsed="0.000028"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:28:52.971142" elapsed="0.000260"/>
</branch>
<status status="PASS" start="2026-10-20T23:28:52.971108" elapsed="0.000327"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-10-20T23:28:52.971712" elapsed="0.000050"/>
</return>
<status status="PASS" start="2026-10-20T23:28:52.971557" elapsed="0.000263"/>
</branch>
<status status="PASS" start="2026-10-20T23:28:52.971526" elapsed="0.000338"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:28:52.971925" elapsed="0.000025"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-10-20T23:28:52.975841" elapsed="0.000535"/>
</kw>
<msg time="2026-10-20T23:28:52.976519" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:28:52.973053" elapsed="0.003632"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:52.979416" elapsed="0.000039"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:52.979717" elapsed="0.000031"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-10-20T23:28:52.972388" elapsed="0.007443"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-10-20T23:28:52.344703" elapsed="0.635228"/>
</kw>
<msg time="2026-10-20T23:28:52.980059" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:28:52.343895" elapsed="0.636263"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-10-20T23:28:52.343401" elapsed="0.636860"/>
</kw>
<msg time="2026-10-20T23:28:52.980348" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:28:52.342919" elapsed="0.637514"/>
</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-10-20T23:28:52.982265" elapsed="0.000202"/>
</kw>
<msg time="2026-10-20T23:28:52.982552" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:28:52.981586" elapsed="0.001048"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:52.982886" elapsed="0.000029"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:52.983104" 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-10-20T23:28:52.980871" elapsed="0.002338"/>
</kw>
<msg time="2026-10-20T23:28:52.983413" 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-10-20T23:28:52.342017" elapsed="0.641440"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:28:52.984221" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:28:52.983898" elapsed="0.000378"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-20T23:28:52.984355" 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-10-20T23:28:52.341136" elapsed="0.643398"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-10-20T23:28:52.340975" elapsed="0.643610"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-10-20T23:28:52.340863" elapsed="0.643766"/>
</for>
<arg>command=netstat -pnatu | grep 2550</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-10-20T23:28:52.338908" elapsed="0.645793"/>
</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="FAIL" start="2026-10-20T23:22:47.069560" elapsed="365.915241">Keyword 'Verify_Members_Are_Ready' failed after retrying for 6 minutes. The last error was: HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<doc>Stop and Start controller.</doc>
<status status="FAIL" start="2026-10-20T23:22:35.275218" elapsed="377.709779">Keyword 'Verify_Members_Are_Ready' failed after retrying for 6 minutes. The last error was: HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</test>
<test id="s1-s5-s1-t18" name="Check Linear Topology After Controller Restarts" line="128">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:28:52.993660" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:28:52.993734" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:28:52.993867" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:28:52.987543" elapsed="0.006945">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:28:52.994842" elapsed="0.000030"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:52.995458" elapsed="0.000056"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:52.995776" elapsed="0.000028"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:52.996069" elapsed="0.000034"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:52.996553" elapsed="0.000034"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:52.996847" elapsed="0.000027"/>
</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-10-20T23:28:52.997151" elapsed="0.000026"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:52.997580" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:28:52.997270" elapsed="0.000386"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:28:52.997245" elapsed="0.000445"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:52.998006" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:28:52.997760" elapsed="0.000316"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:28:52.997740" elapsed="0.000366"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:52.998438" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:28:52.998172" elapsed="0.000371"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:28:52.998153" elapsed="0.000424"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:28:52.995176" elapsed="0.003432"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:28:52.994941" elapsed="0.003699"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:28:52.987068" elapsed="0.011693">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:28:55.007408" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:28:55.007564" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:28:55.007794" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:28:55.001005" elapsed="0.007731">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:28:55.009373" elapsed="0.000053"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:55.010932" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:55.011441" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:55.011927" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:55.012469" elapsed="0.000074"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:55.012969" elapsed="0.000042"/>
</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-10-20T23:28:55.013467" elapsed="0.000062"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:55.014082" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:28:55.013681" elapsed="0.000510"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:28:55.013641" elapsed="0.000604"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:55.014804" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:28:55.014388" elapsed="0.000527"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:28:55.014353" elapsed="0.000612"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:55.015498" elapsed="0.000060"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:28:55.015073" elapsed="0.000651"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:28:55.015042" elapsed="0.000735"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:28:55.010519" elapsed="0.005307"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:28:55.009552" elapsed="0.006327"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:28:55.000075" elapsed="0.016006">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:28:57.024723" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:28:57.024853" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:28:57.025107" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:28:57.018285" elapsed="0.007884">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:28:57.026859" elapsed="0.000053"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:57.027844" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:57.028303" elapsed="0.000071"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:57.028801" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:57.029237" elapsed="0.000041"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:57.029729" elapsed="0.000043"/>
</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-10-20T23:28:57.030191" elapsed="0.000041"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:57.030832" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:28:57.030411" elapsed="0.000532"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:28:57.030368" elapsed="0.000628"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:57.031521" elapsed="0.000061"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:28:57.031105" elapsed="0.000548"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:28:57.031074" elapsed="0.000629"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:57.032199" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:28:57.031808" elapsed="0.000527"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:28:57.031777" elapsed="0.000611"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:28:57.027433" elapsed="0.005004"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:28:57.027023" elapsed="0.005467"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:28:57.017416" elapsed="0.015293">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:28:59.040924" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:28:59.041050" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:28:59.041401" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:28:59.035045" elapsed="0.007247">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:28:59.042957" elapsed="0.000050"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:59.043940" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:59.044427" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:59.044893" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:59.045361" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:59.045870" elapsed="0.000049"/>
</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-10-20T23:28:59.046395" elapsed="0.000049"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:59.047021" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:28:59.046619" elapsed="0.000513"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:28:59.046577" elapsed="0.000610"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:59.047780" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:28:59.047299" elapsed="0.000598"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:28:59.047266" elapsed="0.000682"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:28:59.048491" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:28:59.048057" elapsed="0.000571"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:28:59.048025" elapsed="0.000655"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:28:59.043526" elapsed="0.005204"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:28:59.043117" elapsed="0.005666"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:28:59.034175" elapsed="0.014810">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:29:01.058401" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:29:01.058527" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:29:01.058793" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:29:01.052199" elapsed="0.007637">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:29:01.060536" elapsed="0.000076"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:01.061531" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:01.062018" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:01.062537" elapsed="0.000072"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:01.063024" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:01.063503" elapsed="0.000043"/>
</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-10-20T23:29:01.064089" elapsed="0.000044"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:01.064786" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:01.064282" elapsed="0.000627"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:01.064241" elapsed="0.000724"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:01.065539" elapsed="0.000089"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:01.065082" elapsed="0.000640"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:01.065048" elapsed="0.000729"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:01.066288" elapsed="0.000074"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:01.065893" elapsed="0.000542"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:01.065859" elapsed="0.000626"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:29:01.061105" elapsed="0.005431"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:29:01.060727" elapsed="0.005882"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:29:01.051182" elapsed="0.015631">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:29:03.075604" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:29:03.075759" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:29:03.075984" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:29:03.068913" elapsed="0.008017">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:29:03.077555" elapsed="0.000051"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:03.078531" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:03.079020" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:03.079494" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:03.079962" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:03.080436" elapsed="0.000043"/>
</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-10-20T23:29:03.080921" elapsed="0.000043"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:03.081544" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:03.081114" elapsed="0.000567"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:03.081073" elapsed="0.000665"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:03.082247" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:03.081852" elapsed="0.000538"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:03.081819" elapsed="0.000623"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:03.082967" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:03.082551" elapsed="0.000527"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:03.082519" elapsed="0.000609"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:29:03.078110" elapsed="0.005065"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:29:03.077735" elapsed="0.005492"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:29:03.068035" elapsed="0.015424">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:29:05.092491" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:29:05.092622" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:29:05.092898" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:29:05.085832" elapsed="0.008621">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:29:05.095092" elapsed="0.000054"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:05.096119" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:05.096636" elapsed="0.000076"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:05.097132" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:05.097628" elapsed="0.000079"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:05.098132" elapsed="0.000044"/>
</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-10-20T23:29:05.098664" elapsed="0.000057"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:05.099336" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:05.098875" elapsed="0.000582"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:05.098834" elapsed="0.000680"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:05.100190" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:05.099671" elapsed="0.000676"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:05.099601" elapsed="0.000804"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:05.101016" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:05.100522" elapsed="0.000618"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:05.100488" elapsed="0.000702"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:29:05.095719" elapsed="0.005521"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:29:05.095258" elapsed="0.006037"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:29:05.084896" elapsed="0.016641">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:29:07.110452" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:29:07.110579" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:29:07.110833" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:29:07.103791" elapsed="0.008036">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:29:07.112556" elapsed="0.000051"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:07.113549" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:07.114034" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:07.114516" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:07.114982" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:07.115461" elapsed="0.000044"/>
</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-10-20T23:29:07.115988" elapsed="0.000045"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:07.116621" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:07.116185" elapsed="0.000574"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:07.116145" elapsed="0.000669"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:07.117365" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:07.116928" elapsed="0.000577"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:07.116895" elapsed="0.000664"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:07.118087" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:07.117688" elapsed="0.000512"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:07.117638" elapsed="0.000613"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:29:07.113124" elapsed="0.005178"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:29:07.112738" elapsed="0.005656"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:29:07.102851" elapsed="0.015747">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:29:09.126726" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:29:09.126852" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:29:09.127074" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:29:09.120804" elapsed="0.007205">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:29:09.128649" elapsed="0.000069"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:09.129616" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:09.130096" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:09.130565" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:09.131023" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:09.131493" elapsed="0.000043"/>
</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-10-20T23:29:09.131976" elapsed="0.000042"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:09.133072" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:09.132168" elapsed="0.001128"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:09.132126" elapsed="0.001263"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:09.133929" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:09.133508" elapsed="0.000535"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:09.133474" elapsed="0.000620"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:09.134625" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:09.134203" elapsed="0.000556"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:09.134171" elapsed="0.000639"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:29:09.129202" elapsed="0.005656"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:29:09.128829" elapsed="0.006085"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:29:09.119893" elapsed="0.015229">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:29:11.143547" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:29:11.143670" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:29:11.143924" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:29:11.137368" elapsed="0.007470">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:29:11.145462" elapsed="0.000051"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:11.146438" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:11.146923" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:11.147403" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:11.147872" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:11.148346" elapsed="0.000044"/>
</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-10-20T23:29:11.148830" elapsed="0.000044"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:11.149455" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:11.149025" elapsed="0.000543"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:11.148984" elapsed="0.000641"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:11.150151" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:11.149758" elapsed="0.000542"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:11.149704" elapsed="0.000708"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:11.150950" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:11.150530" elapsed="0.000534"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:11.150497" elapsed="0.000616"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:29:11.146021" elapsed="0.005141"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:29:11.145618" elapsed="0.005597"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:29:11.136437" elapsed="0.015011">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:29:13.159873" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:29:13.160110" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:29:13.160368" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:29:13.153666" elapsed="0.007588">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:29:13.161906" elapsed="0.000052"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:13.162891" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:13.163378" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:13.163847" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:13.164298" elapsed="0.000070"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:13.164796" elapsed="0.000044"/>
</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-10-20T23:29:13.165255" elapsed="0.000042"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:13.165900" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:13.165481" elapsed="0.000532"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:13.165439" elapsed="0.000628"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:13.166623" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:13.166178" elapsed="0.000558"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:13.166145" elapsed="0.000665"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:13.167351" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:13.166918" elapsed="0.000547"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:13.166887" elapsed="0.000627"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:29:13.162476" elapsed="0.005085"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:29:13.162067" elapsed="0.005546"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:29:13.152753" elapsed="0.015085">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:29:15.176967" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:29:15.177152" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:29:15.177477" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:29:15.170029" elapsed="0.008408">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:29:15.179066" elapsed="0.000050"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:15.180106" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:15.180614" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:15.181188" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:15.181668" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:15.182135" elapsed="0.000043"/>
</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-10-20T23:29:15.182624" elapsed="0.000044"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:15.183243" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:15.182842" elapsed="0.000543"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:15.182778" elapsed="0.000665"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:15.184007" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:15.183557" elapsed="0.000567"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:15.183524" elapsed="0.000650"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:15.184707" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:15.184283" elapsed="0.000559"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:15.184251" elapsed="0.000641"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:29:15.179642" elapsed="0.005298"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:29:15.179227" elapsed="0.005766"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:29:15.169135" elapsed="0.016061">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:29:17.193198" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:29:17.193361" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:29:17.193585" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:29:17.187275" elapsed="0.007244">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:29:17.195150" elapsed="0.000051"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:17.196144" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:17.196643" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:17.197115" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:17.197587" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:17.198048" elapsed="0.000042"/>
</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-10-20T23:29:17.198532" elapsed="0.000043"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:17.199144" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:17.198722" elapsed="0.000535"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:17.198681" elapsed="0.000662"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:17.199875" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:17.199461" elapsed="0.000529"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:17.199428" elapsed="0.000713"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:17.200694" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:17.200264" elapsed="0.000545"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:17.200230" elapsed="0.000652"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:29:17.195722" elapsed="0.005211"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:29:17.195341" elapsed="0.005646"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:29:17.186410" elapsed="0.014780">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:29:19.209545" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:29:19.209668" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:29:19.209909" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:29:19.203277" elapsed="0.007557">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:29:19.211533" elapsed="0.000070"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:19.213107" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:19.213600" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:19.214062" elapsed="0.000041"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:19.214529" elapsed="0.000041"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:19.214990" elapsed="0.000041"/>
</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-10-20T23:29:19.215471" elapsed="0.000042"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:19.216086" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:19.215663" elapsed="0.000571"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:19.215621" elapsed="0.000672"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:19.216879" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:19.216446" elapsed="0.000551"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:19.216411" elapsed="0.000639"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:19.217792" elapsed="0.000086"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:19.217201" elapsed="0.000769"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:19.217160" elapsed="0.000861"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:29:19.212667" elapsed="0.005404"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:29:19.211718" elapsed="0.006408"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:29:19.202442" elapsed="0.015915">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:29:21.228620" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:29:21.228785" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:29:21.229251" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:29:21.221115" elapsed="0.009257">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:29:21.231030" elapsed="0.000071"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:21.232445" elapsed="0.000058"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:21.232998" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:21.233486" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:21.233952" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:21.234425" elapsed="0.000043"/>
</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-10-20T23:29:21.234904" elapsed="0.000044"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:21.235535" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:21.235099" elapsed="0.000551"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:21.235058" elapsed="0.000646"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:21.236278" elapsed="0.000073"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:21.235860" elapsed="0.000565"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:21.235814" elapsed="0.000660"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:21.236990" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:21.236582" elapsed="0.000519"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:21.236551" elapsed="0.000598"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:29:21.231859" elapsed="0.005337"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:29:21.231251" elapsed="0.005999"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:29:21.219951" elapsed="0.017545">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:29:23.245757" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:29:23.245929" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:29:23.246200" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:29:23.239800" elapsed="0.007361">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:29:23.247813" elapsed="0.000051"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:23.248896" elapsed="0.000075"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:23.249445" elapsed="0.000061"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:23.250123" elapsed="0.000063"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:23.250813" elapsed="0.000062"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:23.251538" elapsed="0.000063"/>
</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-10-20T23:29:23.252429" elapsed="0.000071"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:23.253397" elapsed="0.000068"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:23.252724" elapsed="0.000843"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:23.252662" elapsed="0.000981"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:23.254479" elapsed="0.000071"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:23.253811" elapsed="0.000844"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:23.253759" elapsed="0.000979"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:23.255559" elapsed="0.000061"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:23.254904" elapsed="0.000820"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:23.254855" elapsed="0.000944"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:29:23.248495" elapsed="0.007377"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:29:23.248007" elapsed="0.007973"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:29:23.238810" elapsed="0.017469">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:29:25.265618" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:29:25.265742" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:29:25.266013" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:29:25.259264" elapsed="0.007715">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:29:25.267640" elapsed="0.000052"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:25.268667" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:25.269148" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:25.269619" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:25.270078" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:25.270544" elapsed="0.000042"/>
</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-10-20T23:29:25.271024" elapsed="0.000043"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:25.271636" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:25.271213" elapsed="0.000534"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:25.271173" elapsed="0.000627"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:25.272437" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:25.271911" elapsed="0.000651"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:25.271879" elapsed="0.000734"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:25.273137" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:25.272723" elapsed="0.000526"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:25.272691" elapsed="0.000610"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:29:25.268220" elapsed="0.005162"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:29:25.267804" elapsed="0.005632"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:29:25.258292" elapsed="0.015346">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:29:27.282068" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:29:27.282188" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:29:27.282467" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:29:27.275923" elapsed="0.007483">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:29:27.284027" elapsed="0.000050"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:27.285002" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:27.285568" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:27.286053" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:27.286583" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:27.287045" elapsed="0.000042"/>
</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-10-20T23:29:27.287673" elapsed="0.000048"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:27.288339" elapsed="0.000061"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:27.287879" elapsed="0.000595"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:27.287837" elapsed="0.000693"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:27.289094" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:27.288679" elapsed="0.000599"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:27.288609" elapsed="0.000748"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:27.289930" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:27.289501" elapsed="0.000556"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:27.289469" elapsed="0.000637"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:29:27.284596" elapsed="0.005557"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:29:27.284185" elapsed="0.006021"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:29:27.275025" elapsed="0.015415">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:29:29.299076" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:29:29.299203" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:29:29.299474" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:29:29.292573" elapsed="0.007830">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:29:29.301130" elapsed="0.000053"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:29.302102" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:29.302595" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:29.303059" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:29.303541" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:29.303990" elapsed="0.000067"/>
</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-10-20T23:29:29.304501" elapsed="0.000043"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:29.305115" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:29.304693" elapsed="0.000537"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:29.304652" elapsed="0.000633"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:29.305824" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:29.305429" elapsed="0.000507"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:29.305395" elapsed="0.000593"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:29.306542" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:29.306123" elapsed="0.000534"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:29.306090" elapsed="0.000617"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:29:29.301692" elapsed="0.005065"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:29:29.301290" elapsed="0.005520"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:29:29.291653" elapsed="0.015377">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:29:31.315416" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:29:31.315544" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:29:31.315763" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:29:31.309153" elapsed="0.007571">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:29:31.317364" elapsed="0.000052"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:31.318333" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:31.318797" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:31.319393" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:31.319838" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:31.320296" elapsed="0.000070"/>
</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-10-20T23:29:31.320784" elapsed="0.000041"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:31.321411" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:31.320970" elapsed="0.000651"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:31.320931" elapsed="0.000747"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:31.322205" elapsed="0.000130"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:31.321790" elapsed="0.000621"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:31.321757" elapsed="0.000705"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:31.322965" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:31.322572" elapsed="0.000529"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:31.322539" elapsed="0.000613"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:29:31.317890" elapsed="0.005310"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:29:31.317523" elapsed="0.005731"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:29:31.308281" elapsed="0.015201">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:29:33.331664" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:29:33.331786" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:29:33.332006" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:29:33.325618" elapsed="0.007295">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:29:33.333617" elapsed="0.000050"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:33.334577" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:33.335028" elapsed="0.000064"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:33.335903" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:33.336416" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:33.336871" elapsed="0.000042"/>
</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-10-20T23:29:33.337413" elapsed="0.000050"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:33.338024" elapsed="0.000064"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:33.337616" elapsed="0.000544"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:33.337576" elapsed="0.000638"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:33.338758" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:33.338357" elapsed="0.000512"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:33.338294" elapsed="0.000624"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:33.339479" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:33.339026" elapsed="0.000568"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:33.338995" elapsed="0.000649"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:29:33.334163" elapsed="0.005529"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:29:33.333772" elapsed="0.005972"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:29:33.324753" elapsed="0.015191">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:29:35.348250" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:29:35.348518" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:29:35.348742" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:29:35.342050" elapsed="0.007611">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:29:35.350349" elapsed="0.000052"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:35.351293" elapsed="0.000075"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:35.351780" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:35.352245" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:35.352722" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:35.353202" elapsed="0.000042"/>
</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-10-20T23:29:35.353686" elapsed="0.000042"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:35.354296" elapsed="0.000069"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:35.353876" elapsed="0.000560"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:35.353835" elapsed="0.000654"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:35.354991" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:35.354601" elapsed="0.000519"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:35.354569" elapsed="0.000603"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:35.355700" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:35.355281" elapsed="0.000531"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:35.355248" elapsed="0.000613"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:29:35.350880" elapsed="0.005029"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:29:35.350508" elapsed="0.005454"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:29:35.341204" elapsed="0.014974">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:29:37.364857" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:29:37.364981" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:29:37.365224" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:29:37.358363" elapsed="0.007749">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:29:37.366761" elapsed="0.000050"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:37.367825" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:37.368332" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:37.368891" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:37.369390" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:37.369840" elapsed="0.000041"/>
</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-10-20T23:29:37.370342" elapsed="0.000045"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:37.370936" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:37.370537" elapsed="0.000511"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:37.370497" elapsed="0.000605"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:37.371658" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:37.371238" elapsed="0.000532"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:37.371204" elapsed="0.000616"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:37.372370" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:37.371930" elapsed="0.000555"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:37.371897" elapsed="0.000637"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:29:37.367435" elapsed="0.005148"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:29:37.366917" elapsed="0.005719"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:29:37.357478" elapsed="0.015357">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:29:39.382487" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:29:39.382617" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:29:39.382862" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:29:39.375758" elapsed="0.008084">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:29:39.384519" elapsed="0.000053"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:39.385586" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:39.386078" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:39.386604" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:39.387079" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:39.387602" elapsed="0.000044"/>
</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-10-20T23:29:39.388089" elapsed="0.000043"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:39.388771" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:39.388339" elapsed="0.000549"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:39.388269" elapsed="0.000677"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:39.389531" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:39.389064" elapsed="0.000586"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:39.389029" elapsed="0.000768"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:39.390400" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:39.389925" elapsed="0.000598"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:39.389889" elapsed="0.000687"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:29:39.385084" elapsed="0.005544"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:29:39.384682" elapsed="0.006004"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:29:39.374853" elapsed="0.016044">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:29:41.399162" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:29:41.399353" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:29:41.399582" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:29:41.393049" elapsed="0.007526">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:29:41.401222" elapsed="0.000051"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:41.402241" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:41.402741" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:41.403185" elapsed="0.000066"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:41.403684" elapsed="0.000041"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:41.404174" elapsed="0.000067"/>
</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-10-20T23:29:41.404693" elapsed="0.000042"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:41.405303" elapsed="0.000069"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:41.404886" elapsed="0.000556"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:41.404846" elapsed="0.000649"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:41.406001" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:41.405607" elapsed="0.000503"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:41.405575" elapsed="0.000583"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:41.406713" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:41.406289" elapsed="0.000535"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:41.406256" elapsed="0.000615"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:29:41.401823" elapsed="0.005097"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:29:41.401426" elapsed="0.005546"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:29:41.392154" elapsed="0.015016">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:29:43.415868" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:29:43.415988" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:29:43.416772" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:29:43.409387" elapsed="0.008313">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:29:43.418360" elapsed="0.000052"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:43.419330" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:43.419800" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:43.420258" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:43.420726" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:43.421165" elapsed="0.000043"/>
</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-10-20T23:29:43.421681" elapsed="0.000044"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:43.422291" elapsed="0.000070"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:43.421873" elapsed="0.000560"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:43.421833" elapsed="0.000653"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:43.423053" elapsed="0.000058"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:43.422622" elapsed="0.000575"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:43.422568" elapsed="0.000704"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:43.423829" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:43.423438" elapsed="0.000502"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:43.423404" elapsed="0.000584"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:29:43.418897" elapsed="0.005139"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:29:43.418519" elapsed="0.005571"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:29:43.408492" elapsed="0.015865">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:29:45.432759" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:29:45.432942" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:29:45.433289" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:29:45.426472" elapsed="0.008048">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:29:45.435299" elapsed="0.000097"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:45.436370" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:45.436835" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:45.437290" elapsed="0.000073"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:45.437761" elapsed="0.000041"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:45.438201" elapsed="0.000042"/>
</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-10-20T23:29:45.438820" elapsed="0.000045"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:45.439459" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:45.439014" elapsed="0.000561"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:45.438974" elapsed="0.000656"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:45.440137" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:45.439745" elapsed="0.000504"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:45.439711" elapsed="0.000638"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:45.440852" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:45.440463" elapsed="0.000500"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:45.440430" elapsed="0.000583"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:29:45.435892" elapsed="0.005170"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:29:45.435514" elapsed="0.005602"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:29:45.425604" elapsed="0.015758">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:29:47.449966" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:29:47.450091" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:29:47.450361" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:29:47.443457" elapsed="0.007761">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:29:47.451860" elapsed="0.000049"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:47.452863" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:47.453358" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:47.453802" elapsed="0.000041"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:47.454236" elapsed="0.000041"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:47.454721" elapsed="0.000042"/>
</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-10-20T23:29:47.455178" elapsed="0.000040"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:47.459126" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:47.458688" elapsed="0.000559"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:47.455365" elapsed="0.004034"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:47.459933" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:47.459529" elapsed="0.000516"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:47.459494" elapsed="0.000600"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:47.460632" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:47.460202" elapsed="0.000541"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:47.460170" elapsed="0.000622"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:29:47.452473" elapsed="0.008367"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:29:47.452014" elapsed="0.008877"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:29:47.442596" elapsed="0.018493">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:29:49.469949" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:29:49.470072" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:29:49.470290" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:29:49.463191" elapsed="0.008005">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:29:49.471839" elapsed="0.000050"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:49.472811" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:49.473264" elapsed="0.000086"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:49.473756" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:49.474196" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:49.474686" elapsed="0.000043"/>
</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-10-20T23:29:49.475147" elapsed="0.000041"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:49.475790" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:49.475382" elapsed="0.000520"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:49.475295" elapsed="0.000660"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:49.476499" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:49.476067" elapsed="0.000542"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:49.476034" elapsed="0.000625"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:49.477154" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:49.476768" elapsed="0.000494"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:49.476736" elapsed="0.000623"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:29:49.472424" elapsed="0.004988"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:29:49.471997" elapsed="0.005468"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:29:49.462368" elapsed="0.015296">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:29:51.486239" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:29:51.486425" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:29:51.486651" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:29:51.479769" elapsed="0.007802">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:29:51.488255" elapsed="0.000079"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:51.489225" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:51.489729" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:51.490174" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:51.490666" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:51.491113" elapsed="0.000043"/>
</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-10-20T23:29:51.491621" elapsed="0.000043"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:51.492209" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:51.491814" elapsed="0.000536"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:51.491773" elapsed="0.000658"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:51.492937" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:51.492546" elapsed="0.000503"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:51.492513" elapsed="0.000586"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:51.493643" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:51.493209" elapsed="0.000549"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:51.493176" elapsed="0.000799"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:29:51.488842" elapsed="0.005186"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:29:51.488467" elapsed="0.005615"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:29:51.478905" elapsed="0.015378">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:29:53.503039" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:29:53.503156" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:29:53.503436" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:29:53.496464" elapsed="0.007833">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:29:53.504935" elapsed="0.000047"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:53.505892" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:53.506370" elapsed="0.000064"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:53.506832" elapsed="0.000041"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:53.507266" elapsed="0.000065"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:53.507747" elapsed="0.000041"/>
</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-10-20T23:29:53.508197" elapsed="0.000041"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:53.508830" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:53.508432" elapsed="0.000596"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:53.508369" elapsed="0.000715"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:53.509634" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:53.509197" elapsed="0.000548"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:53.509164" elapsed="0.000630"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:53.510287" elapsed="0.000067"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:53.509902" elapsed="0.000543"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:53.509871" elapsed="0.000624"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:29:53.505508" elapsed="0.005036"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:29:53.505085" elapsed="0.005512"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:29:53.495593" elapsed="0.015199">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:29:55.519858" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:29:55.519982" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:29:55.520200" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:29:55.512851" elapsed="0.008271">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:29:55.521764" elapsed="0.000050"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:55.522730" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:55.523185" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:55.523676" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:55.524118" elapsed="0.000040"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:55.524606" elapsed="0.000041"/>
</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-10-20T23:29:55.525060" elapsed="0.000041"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:55.525686" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:55.525246" elapsed="0.000551"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:55.525206" elapsed="0.000644"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:55.526376" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:55.525961" elapsed="0.000548"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:55.525928" elapsed="0.000631"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:55.527054" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:55.526667" elapsed="0.000496"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:55.526634" elapsed="0.000578"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:29:55.522293" elapsed="0.004967"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:29:55.521919" elapsed="0.005423"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:29:55.511974" elapsed="0.015587">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:29:57.536012" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:29:57.536234" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:29:57.536507" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:29:57.529770" elapsed="0.007632">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:29:57.538017" elapsed="0.000049"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:57.538994" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:57.539499" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:57.539943" elapsed="0.000041"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:57.540407" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:57.540864" elapsed="0.000041"/>
</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-10-20T23:29:57.541340" elapsed="0.000043"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:57.542411" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:57.541969" elapsed="0.000577"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:57.541512" elapsed="0.001089"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:57.543110" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:57.542714" elapsed="0.000508"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:57.542681" elapsed="0.000591"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:57.543830" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:57.543413" elapsed="0.000528"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:57.543379" elapsed="0.000611"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:29:57.538603" elapsed="0.005436"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:29:57.538172" elapsed="0.005920"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:29:57.528876" elapsed="0.015413">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:29:59.550450" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:29:59.550539" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:29:59.550651" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:29:59.546016" elapsed="0.005076">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:29:59.551402" elapsed="0.000023"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:59.551847" elapsed="0.000021"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:59.552051" elapsed="0.000019"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:59.552329" elapsed="0.000021"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:59.552555" elapsed="0.000019"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:59.552754" elapsed="0.000019"/>
</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-10-20T23:29:59.552961" elapsed="0.000019"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:59.553230" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:59.553051" elapsed="0.000230"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:59.553031" elapsed="0.000293"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:59.553568" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:59.553377" elapsed="0.000243"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:59.553363" elapsed="0.000279"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:29:59.553868" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:29:59.553691" elapsed="0.000227"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:29:59.553677" elapsed="0.000263"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:29:59.551665" elapsed="0.002298"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:29:59.551478" elapsed="0.002510"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:29:59.545473" elapsed="0.008608">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:30:01.562410" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:30:01.562567" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:30:01.562801" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:30:01.556146" elapsed="0.007625">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:30:01.564427" elapsed="0.000055"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:01.565410" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:01.565889" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:01.566359" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:01.566829" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:01.567267" elapsed="0.000068"/>
</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-10-20T23:30:01.567773" elapsed="0.000044"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:01.568525" elapsed="0.000082"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:01.567965" elapsed="0.000721"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:01.567925" elapsed="0.000818"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:01.569253" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:01.568858" elapsed="0.000562"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:01.568826" elapsed="0.000771"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:01.570119" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:01.569722" elapsed="0.000508"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:01.569688" elapsed="0.000592"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:30:01.564990" elapsed="0.005370"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:30:01.564617" elapsed="0.005799"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:30:01.555280" elapsed="0.015357">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:30:03.579770" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:30:03.579893" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:30:03.580130" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:30:03.572894" elapsed="0.008149">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:30:03.581692" elapsed="0.000051"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:03.582662" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:03.583120" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:03.583608" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:03.584052" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:03.584523" elapsed="0.000062"/>
</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-10-20T23:30:03.585006" elapsed="0.000042"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:03.585647" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:03.585196" elapsed="0.000566"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:03.585156" elapsed="0.000660"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:03.586352" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:03.585931" elapsed="0.000536"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:03.585897" elapsed="0.000621"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:03.587047" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:03.586651" elapsed="0.000509"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:03.586617" elapsed="0.000594"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:30:03.582224" elapsed="0.005036"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:30:03.581850" elapsed="0.005492"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:30:03.571908" elapsed="0.015639">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:30:05.596438" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:30:05.596564" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:30:05.596912" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:30:05.589763" elapsed="0.008074">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:30:05.598455" elapsed="0.000051"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:05.599443" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:05.599923" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:05.600398" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:05.600866" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:05.601341" elapsed="0.000046"/>
</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-10-20T23:30:05.601825" elapsed="0.000043"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:05.602448" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:05.602020" elapsed="0.000542"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:05.601980" elapsed="0.000657"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:05.603161" elapsed="0.000059"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:05.602754" elapsed="0.000592"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:05.602721" elapsed="0.000698"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:05.603964" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:05.603538" elapsed="0.000541"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:05.603504" elapsed="0.000628"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:30:05.599028" elapsed="0.005154"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:30:05.598641" elapsed="0.005595"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:30:05.588855" elapsed="0.015613">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:30:07.613385" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:30:07.613518" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:30:07.613767" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:30:07.606716" elapsed="0.007974">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:30:07.615284" elapsed="0.000079"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:07.616270" elapsed="0.000251"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:07.616963" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:07.617914" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:07.618411" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:07.618889" elapsed="0.000043"/>
</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-10-20T23:30:07.619486" elapsed="0.000046"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:07.620110" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:07.619703" elapsed="0.000521"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:07.619661" elapsed="0.000618"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:07.620845" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:07.620426" elapsed="0.000536"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:07.620391" elapsed="0.000623"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:07.621554" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:07.621126" elapsed="0.000564"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:07.621092" elapsed="0.000650"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:30:07.615878" elapsed="0.005915"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:30:07.615472" elapsed="0.006374"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:30:07.605808" elapsed="0.016240">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:30:09.631067" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:30:09.631195" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:30:09.631479" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:30:09.624272" elapsed="0.008139">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:30:09.633043" elapsed="0.000052"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:09.634039" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:09.634528" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:09.634998" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:09.635476" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:09.635946" elapsed="0.000042"/>
</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-10-20T23:30:09.636437" elapsed="0.000044"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:09.637052" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:09.636631" elapsed="0.000532"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:09.636590" elapsed="0.000627"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:09.637774" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:09.637359" elapsed="0.000529"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:09.637296" elapsed="0.000641"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:09.638465" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:09.638046" elapsed="0.000531"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:09.638014" elapsed="0.000612"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:30:09.633626" elapsed="0.005069"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:30:09.633206" elapsed="0.005546"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:30:09.623390" elapsed="0.015565">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:30:11.647585" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:30:11.647729" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:30:11.647954" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:30:11.641262" elapsed="0.007625">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:30:11.649525" elapsed="0.000049"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:11.650495" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:11.650974" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:11.651456" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:11.651921" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:11.652402" elapsed="0.000044"/>
</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-10-20T23:30:11.652887" elapsed="0.000043"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:11.653531" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:11.653103" elapsed="0.000541"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:11.653061" elapsed="0.000637"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:11.654230" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:11.653836" elapsed="0.000578"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:11.653803" elapsed="0.000667"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:11.655001" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:11.654582" elapsed="0.000529"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:11.654549" elapsed="0.000612"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:30:11.650073" elapsed="0.005135"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:30:11.649680" elapsed="0.005580"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:30:11.640372" elapsed="0.015124">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:30:13.665201" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:30:13.665368" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:30:13.665632" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:30:13.658272" elapsed="0.008296">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:30:13.667279" elapsed="0.000081"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:13.668273" elapsed="0.000076"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:13.668781" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:13.669231" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:13.669699" elapsed="0.000064"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:13.670165" elapsed="0.000041"/>
</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-10-20T23:30:13.670645" elapsed="0.000042"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:13.671336" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:13.670903" elapsed="0.000550"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:13.670859" elapsed="0.000649"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:13.672033" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:13.671619" elapsed="0.000526"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:13.671587" elapsed="0.000608"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:13.672763" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:13.672301" elapsed="0.000575"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:13.672269" elapsed="0.000656"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:30:13.667881" elapsed="0.005093"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:30:13.667471" elapsed="0.005556"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:30:13.657406" elapsed="0.015823">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:30:15.681951" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:30:15.682073" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:30:15.682295" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:30:15.675394" elapsed="0.007837">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:30:15.683875" elapsed="0.000049"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:15.684851" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:15.685336" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:15.685801" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:15.686245" elapsed="0.000041"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:15.686714" elapsed="0.000042"/>
</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-10-20T23:30:15.687191" elapsed="0.000042"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:15.687828" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:15.687409" elapsed="0.000650"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:15.687366" elapsed="0.000752"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:15.688713" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:15.688232" elapsed="0.000630"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:15.688199" elapsed="0.000714"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:15.689457" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:15.689026" elapsed="0.000550"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:15.688993" elapsed="0.000641"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:30:15.684426" elapsed="0.005265"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:30:15.684029" elapsed="0.005772"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:30:15.674520" elapsed="0.015539">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:30:17.698611" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:30:17.698740" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:30:17.698988" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:30:17.692272" elapsed="0.008199">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:30:17.701099" elapsed="0.000050"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:17.702080" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:17.702574" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:17.703047" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:17.703522" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:17.703998" elapsed="0.000043"/>
</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-10-20T23:30:17.704512" elapsed="0.000045"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:17.705131" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:17.704706" elapsed="0.000538"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:17.704665" elapsed="0.000633"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:17.705863" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:17.705443" elapsed="0.000536"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:17.705408" elapsed="0.000621"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:17.706561" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:17.706140" elapsed="0.000534"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:17.706107" elapsed="0.000616"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:30:17.701665" elapsed="0.005107"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:30:17.701256" elapsed="0.005590"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:30:17.691388" elapsed="0.015659">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:30:19.715952" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:30:19.716195" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:30:19.716454" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:30:19.709215" elapsed="0.008161">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:30:19.718027" elapsed="0.000052"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:19.719012" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:19.719503" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:19.720028" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:19.720561" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:19.721095" elapsed="0.000043"/>
</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-10-20T23:30:19.721617" elapsed="0.000046"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:19.722246" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:19.721815" elapsed="0.000575"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:19.721774" elapsed="0.000671"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:19.723003" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:19.722585" elapsed="0.000533"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:19.722550" elapsed="0.000617"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:19.723749" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:19.723279" elapsed="0.000606"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:19.723246" elapsed="0.000690"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:30:19.718600" elapsed="0.005388"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:30:19.718186" elapsed="0.005855"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:30:19.708333" elapsed="0.015910">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:30:21.730612" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:30:21.730692" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:30:21.730835" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:30:21.725706" elapsed="0.005782">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:30:21.731912" elapsed="0.000032"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:21.732521" elapsed="0.000031"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:21.732808" elapsed="0.000026"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:21.733184" elapsed="0.000028"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:21.733484" elapsed="0.000027"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:21.733765" elapsed="0.000026"/>
</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-10-20T23:30:21.734069" elapsed="0.000026"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:21.734751" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:21.734489" elapsed="0.000336"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:21.734166" elapsed="0.000694"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:21.735269" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:21.734962" elapsed="0.000410"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:21.734936" elapsed="0.000468"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:21.735722" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:21.735473" elapsed="0.000319"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:21.735453" elapsed="0.000371"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:30:21.732256" elapsed="0.003600"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:30:21.732014" elapsed="0.003895"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:30:21.725131" elapsed="0.010937">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:30:23.741671" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:30:23.741733" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:30:23.741846" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:30:23.737365" elapsed="0.004936">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:30:23.742617" elapsed="0.000023"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:23.743063" elapsed="0.000022"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:23.743270" elapsed="0.000019"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:23.743488" elapsed="0.000019"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:23.743686" elapsed="0.000019"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:23.743884" elapsed="0.000019"/>
</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-10-20T23:30:23.744111" 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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:23.744396" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:23.744202" elapsed="0.000246"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:23.744183" elapsed="0.000289"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:23.744700" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:23.744524" elapsed="0.000231"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:23.744509" elapsed="0.000335"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:23.745159" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:23.744904" elapsed="0.000346"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:23.744888" elapsed="0.000397"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:30:23.742867" elapsed="0.002474"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:30:23.742693" elapsed="0.002684"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:30:23.736842" elapsed="0.008673">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:30:25.754366" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:30:25.754499" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:30:25.754719" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:30:25.747747" elapsed="0.007932">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:30:25.756374" elapsed="0.000056"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:25.757396" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:25.757868" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:25.758423" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:25.758883" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:25.759415" elapsed="0.000048"/>
</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-10-20T23:30:25.759900" elapsed="0.000045"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:25.760586" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:25.760128" elapsed="0.000577"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:25.760086" elapsed="0.000674"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:25.761363" elapsed="0.000058"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:25.760874" elapsed="0.000620"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:25.760841" elapsed="0.000704"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:25.762084" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:25.761655" elapsed="0.000545"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:25.761622" elapsed="0.000640"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:30:25.756928" elapsed="0.005432"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:30:25.756541" elapsed="0.005876"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:30:25.746820" elapsed="0.015803">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:30:27.771684" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:30:27.771804" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:30:27.772465" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:30:27.764743" elapsed="0.008783">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:30:27.774138" elapsed="0.000051"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:27.775106" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:27.775593" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:27.776051" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:27.776517" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:27.776954" elapsed="0.000040"/>
</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-10-20T23:30:27.777455" elapsed="0.000042"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:27.778064" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:27.777644" elapsed="0.000532"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:27.777605" elapsed="0.000626"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:27.778762" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:27.778372" elapsed="0.000500"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:27.778337" elapsed="0.000584"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:27.779466" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:27.779051" elapsed="0.000527"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:27.779017" elapsed="0.000610"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:30:27.774697" elapsed="0.004977"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:30:27.774295" elapsed="0.005432"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:30:27.763830" elapsed="0.016092">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:30:29.788784" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:30:29.788908" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:30:29.789153" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:30:29.782134" elapsed="0.007953">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:30:29.790729" elapsed="0.000051"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:29.791695" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:29.792167" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:29.792634" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:29.793088" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:29.793569" elapsed="0.000051"/>
</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-10-20T23:30:29.794154" elapsed="0.000045"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:29.794777" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:29.794378" elapsed="0.000510"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:29.794335" elapsed="0.000606"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:29.795494" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:29.795073" elapsed="0.000533"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:29.795020" elapsed="0.000636"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:29.796176" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:29.795764" elapsed="0.000524"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:29.795733" elapsed="0.000631"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:30:29.791279" elapsed="0.005135"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:30:29.790887" elapsed="0.005581"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:30:29.781212" elapsed="0.015453">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:30:31.805575" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:30:31.805696" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:30:31.805908" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:30:31.798769" elapsed="0.008054">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:30:31.807532" elapsed="0.000055"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:31.808949" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:31.809761" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:31.810224" elapsed="0.000041"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:31.810687" elapsed="0.000040"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:31.811136" elapsed="0.000042"/>
</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-10-20T23:30:31.811616" elapsed="0.000042"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:31.812232" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:31.811803" elapsed="0.000566"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:31.811763" elapsed="0.000660"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:31.812927" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:31.812534" elapsed="0.000502"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:31.812502" elapsed="0.000601"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:31.813634" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:31.813213" elapsed="0.000532"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:31.813181" elapsed="0.000614"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:30:31.808550" elapsed="0.005293"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:30:31.807698" elapsed="0.006198"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:30:31.797908" elapsed="0.016206">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:30:33.820537" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:30:33.820601" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:30:33.820717" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:30:33.815520" elapsed="0.005674">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:30:33.821514" elapsed="0.000022"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:33.821960" elapsed="0.000025"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:33.822199" elapsed="0.000021"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:33.822420" elapsed="0.000019"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:33.822625" elapsed="0.000020"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:33.822824" elapsed="0.000019"/>
</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-10-20T23:30:33.823032" elapsed="0.000019"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:33.823348" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:33.823151" elapsed="0.000251"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:33.823123" elapsed="0.000304"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:33.823659" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:33.823477" elapsed="0.000233"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:33.823462" elapsed="0.000270"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:33.823957" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:33.823781" elapsed="0.000226"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:33.823767" elapsed="0.000262"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:30:33.821770" elapsed="0.002280"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:30:33.821595" elapsed="0.002480"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:30:33.815011" elapsed="0.009179">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:30:35.832727" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:30:35.832845" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:30:35.833060" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:30:35.826339" elapsed="0.007655">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:30:35.834775" elapsed="0.000051"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:35.835733" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:35.836203" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:35.836673" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:35.837113" elapsed="0.000061"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:35.837597" elapsed="0.000042"/>
</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-10-20T23:30:35.838115" elapsed="0.000082"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:35.838855" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:35.838415" elapsed="0.000562"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:35.838360" elapsed="0.000711"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:35.839693" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:35.839230" elapsed="0.000586"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:35.839189" elapsed="0.000682"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:35.840509" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:35.839990" elapsed="0.000656"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:35.839955" elapsed="0.000745"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:30:35.835351" elapsed="0.005403"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:30:35.834930" elapsed="0.005882"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:30:35.825448" elapsed="0.015584">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:30:37.850527" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:30:37.850653" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:30:37.850909" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:30:37.843809" elapsed="0.008041">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:30:37.852561" elapsed="0.000052"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:37.853571" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:37.854063" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:37.854568" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:37.855039" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:37.855541" elapsed="0.000045"/>
</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-10-20T23:30:37.856008" elapsed="0.000057"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:37.856779" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:37.856249" elapsed="0.000751"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:37.856204" elapsed="0.000862"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:37.857679" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:37.857235" elapsed="0.000561"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:37.857170" elapsed="0.000683"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:37.858452" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:37.857981" elapsed="0.000595"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:37.857945" elapsed="0.000682"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:30:37.853122" elapsed="0.005556"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:30:37.852724" elapsed="0.006009"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:30:37.842875" elapsed="0.016054">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:30:39.867827" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:30:39.867952" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:30:39.868172" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:30:39.861152" elapsed="0.007992">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:30:39.869896" elapsed="0.000052"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:39.870932" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:39.871474" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:39.871933" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:39.872466" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:39.872933" elapsed="0.000045"/>
</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-10-20T23:30:39.873450" elapsed="0.000060"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:39.874076" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:39.873668" elapsed="0.000537"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:39.873627" elapsed="0.000661"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:39.874866" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:39.874436" elapsed="0.000548"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:39.874401" elapsed="0.000632"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:39.875615" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:39.875144" elapsed="0.000593"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:39.875111" elapsed="0.000677"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:30:39.870536" elapsed="0.005301"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:30:39.870061" elapsed="0.005829"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:30:39.860207" elapsed="0.015878">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:30:41.885006" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:30:41.885221" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:30:41.885522" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:30:41.878186" elapsed="0.008249">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:30:41.887090" elapsed="0.000050"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:41.888055" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:41.888562" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:41.889009" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:41.889501" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:41.889942" elapsed="0.000042"/>
</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-10-20T23:30:41.890448" elapsed="0.000042"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:41.891035" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:41.890638" elapsed="0.000509"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:41.890598" elapsed="0.000603"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:41.891759" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:41.891367" elapsed="0.000505"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:41.891329" elapsed="0.000592"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:41.892471" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:41.892033" elapsed="0.000552"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:41.891998" elapsed="0.000636"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:30:41.887666" elapsed="0.005017"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:30:41.887246" elapsed="0.005489"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:30:41.877290" elapsed="0.015640">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:30:43.901472" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:30:43.901596" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:30:43.901814" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:30:43.895098" elapsed="0.007656">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:30:43.903410" elapsed="0.000052"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:43.904373" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:43.904839" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:43.905447" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:43.905905" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:43.906403" elapsed="0.000045"/>
</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-10-20T23:30:43.906866" elapsed="0.000046"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:43.907510" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:43.907063" elapsed="0.000561"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:43.907021" elapsed="0.000656"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:43.908183" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:43.907788" elapsed="0.000507"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:43.907756" elapsed="0.000635"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:43.908899" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:43.908502" elapsed="0.000508"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:43.908469" elapsed="0.000590"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:30:43.903941" elapsed="0.005166"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:30:43.903569" elapsed="0.005591"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:30:43.894210" elapsed="0.015196">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:30:45.918738" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:30:45.918867" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:30:45.919094" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:30:45.911766" elapsed="0.008310">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:30:45.920941" elapsed="0.000053"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:45.921991" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:45.922535" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:45.926013" elapsed="0.000063"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:45.926583" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:45.927072" elapsed="0.000046"/>
</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-10-20T23:30:45.927645" elapsed="0.000050"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:45.928288" elapsed="0.000094"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:45.927854" elapsed="0.000605"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:45.927811" elapsed="0.000708"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:45.929069" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:45.928642" elapsed="0.000546"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:45.928606" elapsed="0.000803"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:45.929979" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:45.929547" elapsed="0.000551"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:45.929512" elapsed="0.000639"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:30:45.921561" elapsed="0.008642"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:30:45.921108" elapsed="0.009154"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:30:45.910829" elapsed="0.019700">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:30:47.941062" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:30:47.941184" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:30:47.941470" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:30:47.932729" elapsed="0.009666">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:30:47.942993" elapsed="0.000048"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:47.943964" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:47.944476" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:47.944922" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:47.945408" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:47.945852" elapsed="0.000042"/>
</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-10-20T23:30:47.946305" elapsed="0.000091"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:47.946941" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:47.946546" elapsed="0.000505"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:47.946506" elapsed="0.000599"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:47.947650" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:47.947215" elapsed="0.000547"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:47.947183" elapsed="0.000628"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:47.948336" elapsed="0.000062"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:47.947920" elapsed="0.000551"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:47.947887" elapsed="0.000634"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:30:47.943576" elapsed="0.004994"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:30:47.943148" elapsed="0.005474"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:30:47.931823" elapsed="0.016999">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:30:49.959920" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:30:49.960044" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:30:49.960389" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:30:49.951000" elapsed="0.010261">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:30:49.961899" elapsed="0.000050"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:49.962867" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:49.963347" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:49.963816" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:49.964254" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:49.964750" elapsed="0.000042"/>
</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-10-20T23:30:49.965215" elapsed="0.000043"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:49.965856" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:49.965454" elapsed="0.000513"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:49.965394" elapsed="0.000625"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:49.966562" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:49.966131" elapsed="0.000543"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:49.966097" elapsed="0.000625"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:49.967215" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:49.966830" elapsed="0.000524"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:49.966798" elapsed="0.000606"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:30:49.962481" elapsed="0.004993"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:30:49.962057" elapsed="0.005471"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:30:49.950102" elapsed="0.017624">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:30:51.976957" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:30:51.977081" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:30:51.977346" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:30:51.969892" elapsed="0.008336">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:30:51.978878" elapsed="0.000051"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:51.979856" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:51.980338" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:51.980807" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:51.981248" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:51.981744" elapsed="0.000063"/>
</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-10-20T23:30:51.982340" elapsed="0.000046"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:51.982951" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:51.982552" elapsed="0.000510"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:51.982512" elapsed="0.000603"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:51.983668" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:51.983226" elapsed="0.000553"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:51.983193" elapsed="0.000636"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:51.984354" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:51.983936" elapsed="0.000549"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:51.983904" elapsed="0.000632"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:30:51.979447" elapsed="0.005138"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:30:51.979034" elapsed="0.005603"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:30:51.968967" elapsed="0.015868">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:30:53.993958" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:30:53.994080" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:30:53.994360" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:30:53.986991" elapsed="0.008286">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:30:53.995942" elapsed="0.000051"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:53.996951" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:53.997465" elapsed="0.000069"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:53.997950" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:53.998447" elapsed="0.000065"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:53.998932" elapsed="0.000042"/>
</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-10-20T23:30:53.999447" elapsed="0.000071"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:54.000090" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:53.999681" elapsed="0.000520"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:53.999635" elapsed="0.000622"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:54.000852" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:54.000402" elapsed="0.000567"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:54.000368" elapsed="0.000651"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:54.001614" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:54.001127" elapsed="0.000608"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:54.001096" elapsed="0.000689"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:30:53.996549" elapsed="0.005284"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:30:53.996100" elapsed="0.005786"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:30:53.986083" elapsed="0.015999">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:30:56.012060" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:30:56.012185" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:30:56.012445" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:30:56.004424" elapsed="0.008940">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:30:56.013984" elapsed="0.000050"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:56.014971" elapsed="0.000062"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:56.015475" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:56.015945" elapsed="0.000041"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:56.016852" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:56.017341" elapsed="0.000045"/>
</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-10-20T23:30:56.017827" elapsed="0.000043"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:56.018446" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:56.018019" elapsed="0.000562"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:56.017978" elapsed="0.000657"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:56.019139" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:56.018747" elapsed="0.000502"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:56.018715" elapsed="0.000583"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:56.019849" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:56.019439" elapsed="0.000520"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:56.019407" elapsed="0.000601"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:30:56.014576" elapsed="0.005481"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:30:56.014143" elapsed="0.005967"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:30:56.003518" elapsed="0.016820">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:30:58.028634" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:30:58.028759" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:30:58.028978" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:30:58.022471" elapsed="0.007496">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:30:58.030757" elapsed="0.000051"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:58.031739" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:58.032194" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:58.032689" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:58.033134" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:58.033633" elapsed="0.000043"/>
</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-10-20T23:30:58.034096" elapsed="0.000042"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:58.034748" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:58.034286" elapsed="0.000578"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:58.034245" elapsed="0.000676"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:58.035460" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:58.035034" elapsed="0.000561"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:58.035001" elapsed="0.000648"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:30:58.036150" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:30:58.035759" elapsed="0.000502"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:30:58.035727" elapsed="0.000612"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:30:58.031288" elapsed="0.005104"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:30:58.030916" elapsed="0.005530"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:30:58.021621" elapsed="0.015044">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:31:00.045786" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:31:00.045911" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:31:00.046133" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:31:00.038878" elapsed="0.008168">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:31:00.047699" elapsed="0.000052"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:00.048681" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:00.049145" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:00.049640" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:00.050094" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:00.050568" elapsed="0.000059"/>
</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-10-20T23:31:00.051048" elapsed="0.000044"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:00.051693" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:00.051239" elapsed="0.000672"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:00.051198" elapsed="0.000770"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:00.052511" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:00.052083" elapsed="0.000563"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:00.052050" elapsed="0.000647"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:00.053214" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:00.052810" elapsed="0.000547"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:00.052776" elapsed="0.000634"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:31:00.048243" elapsed="0.005217"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:31:00.047859" elapsed="0.005656"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:31:00.037959" elapsed="0.015780">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:31:02.062687" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:31:02.062815" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:31:02.063052" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:31:02.056301" elapsed="0.007676">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:31:02.064601" elapsed="0.000070"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:02.065571" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:02.066057" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:02.066537" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:02.067002" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:02.067472" elapsed="0.000042"/>
</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-10-20T23:31:02.067949" elapsed="0.000042"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:02.068568" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:02.068137" elapsed="0.000563"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:02.068097" elapsed="0.000660"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:02.069300" elapsed="0.000106"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:02.068870" elapsed="0.000612"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:02.068836" elapsed="0.000699"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:02.070078" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:02.069647" elapsed="0.000544"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:02.069614" elapsed="0.000627"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:31:02.065155" elapsed="0.005133"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:31:02.064781" elapsed="0.005626"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:31:02.054948" elapsed="0.015661">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:31:04.078780" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:31:04.079008" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:31:04.079231" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:31:04.072800" elapsed="0.007365">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:31:04.080821" elapsed="0.000051"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:04.081849" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:04.082378" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:04.082875" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:04.083361" elapsed="0.000057"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:04.083846" elapsed="0.000042"/>
</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-10-20T23:31:04.084304" elapsed="0.000072"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:04.084943" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:04.084524" elapsed="0.000530"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:04.084485" elapsed="0.000624"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:04.085668" elapsed="0.000066"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:04.085221" elapsed="0.000587"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:04.085189" elapsed="0.000670"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:04.086395" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:04.085972" elapsed="0.000537"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:04.085939" elapsed="0.000621"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:31:04.081415" elapsed="0.005194"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:31:04.080980" elapsed="0.005683"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:31:04.071902" elapsed="0.014987">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:31:06.095637" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:31:06.095794" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:31:06.096020" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:31:06.089144" elapsed="0.007838">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:31:06.097653" elapsed="0.000057"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:06.099281" elapsed="0.000085"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:06.099854" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:06.100479" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:06.100999" elapsed="0.000060"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:06.101525" elapsed="0.000045"/>
</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-10-20T23:31:06.102051" elapsed="0.000048"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:06.102808" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:06.102254" elapsed="0.000685"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:06.102214" elapsed="0.000783"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:06.103557" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:06.103117" elapsed="0.000559"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:06.103082" elapsed="0.000672"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:06.104352" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:06.103910" elapsed="0.000565"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:06.103866" elapsed="0.000662"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:31:06.098838" elapsed="0.005743"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:31:06.097849" elapsed="0.006790"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:31:06.088225" elapsed="0.016665">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:31:08.113635" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:31:08.113758" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:31:08.114008" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:31:08.107289" elapsed="0.007634">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:31:08.115559" elapsed="0.000050"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:08.116550" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:08.117036" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:08.117511" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:08.117974" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:08.118460" elapsed="0.000044"/>
</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-10-20T23:31:08.118948" elapsed="0.000042"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:08.119585" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:08.119139" elapsed="0.000577"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:08.119098" elapsed="0.000705"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:08.120357" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:08.119934" elapsed="0.000539"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:08.119900" elapsed="0.000744"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:08.121195" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:08.120795" elapsed="0.000540"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:08.120740" elapsed="0.000648"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:31:08.116122" elapsed="0.005317"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:31:08.115717" elapsed="0.005775"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:31:08.106407" elapsed="0.015284">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:31:10.130238" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:31:10.130421" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:31:10.130646" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:31:10.123913" elapsed="0.007661">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:31:10.132205" elapsed="0.000056"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:10.133187" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:10.133716" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:10.134189" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:10.134696" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:10.135176" elapsed="0.000049"/>
</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-10-20T23:31:10.135675" elapsed="0.000043"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:10.136284" elapsed="0.000070"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:10.135888" elapsed="0.000538"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:10.135845" elapsed="0.000635"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:10.137005" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:10.136594" elapsed="0.000524"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:10.136562" elapsed="0.000606"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:10.137699" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:10.137278" elapsed="0.000532"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:10.137245" elapsed="0.000637"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:31:10.132776" elapsed="0.005156"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:31:10.132397" elapsed="0.005588"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:31:10.122997" elapsed="0.015188">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:31:12.147747" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:31:12.147904" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:31:12.148252" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:31:12.140904" elapsed="0.008268">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:31:12.149891" elapsed="0.000052"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:12.150849" elapsed="0.000070"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:12.151361" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:12.151812" elapsed="0.000060"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:12.152276" elapsed="0.000069"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:12.152757" elapsed="0.000041"/>
</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-10-20T23:31:12.153239" elapsed="0.000041"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:12.153880" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:12.153461" elapsed="0.000533"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:12.153420" elapsed="0.000627"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:12.154592" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:12.154159" elapsed="0.000548"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:12.154126" elapsed="0.000631"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:12.155282" elapsed="0.000070"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:12.154889" elapsed="0.000537"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:12.154835" elapsed="0.000641"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:31:12.150458" elapsed="0.005067"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:31:12.150051" elapsed="0.005528"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:31:12.140033" elapsed="0.015744">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:31:14.164002" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:31:14.164127" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:31:14.164384" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:31:14.157952" elapsed="0.007325">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:31:14.165945" elapsed="0.000052"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:14.166959" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:14.167452" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:14.167913" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:14.168380" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:14.168820" elapsed="0.000043"/>
</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-10-20T23:31:14.169434" elapsed="0.000046"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:14.170055" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:14.169634" elapsed="0.000534"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:14.169593" elapsed="0.000629"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:14.170761" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:14.170365" elapsed="0.000591"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:14.170302" elapsed="0.000710"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:14.171577" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:14.171128" elapsed="0.000563"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:14.171094" elapsed="0.000648"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:31:14.166511" elapsed="0.005282"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:31:14.166106" elapsed="0.005740"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:31:14.157076" elapsed="0.014995">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:31:16.181012" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:31:16.181135" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:31:16.181388" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:31:16.174290" elapsed="0.008531">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:31:16.183475" elapsed="0.000053"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:16.184455" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:16.184918" elapsed="0.000069"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:16.185421" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:16.185868" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:16.186360" elapsed="0.000044"/>
</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-10-20T23:31:16.186821" elapsed="0.000043"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:16.187475" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:16.187041" elapsed="0.000550"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:16.186998" elapsed="0.000648"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:16.188179" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:16.187760" elapsed="0.000534"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:16.187726" elapsed="0.000648"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:16.188885" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:16.188488" elapsed="0.000536"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:16.188454" elapsed="0.000622"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:31:16.184043" elapsed="0.005083"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:31:16.183639" elapsed="0.005541"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:31:16.173365" elapsed="0.016046">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:31:18.198477" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:31:18.198606" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:31:18.198839" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:31:18.191757" elapsed="0.008060">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:31:18.200489" elapsed="0.000052"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:18.201490" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:18.201951" elapsed="0.000071"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:18.202506" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:18.203091" elapsed="0.000074"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:18.203691" elapsed="0.000047"/>
</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-10-20T23:31:18.204181" elapsed="0.000042"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:18.204813" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:18.204405" elapsed="0.000541"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:18.204362" elapsed="0.000693"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:18.205714" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:18.205193" elapsed="0.000665"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:18.205152" elapsed="0.000773"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:18.206617" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:18.206102" elapsed="0.000636"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:18.206056" elapsed="0.000732"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:31:18.201069" elapsed="0.005766"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:31:18.200651" elapsed="0.006237"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:31:18.190821" elapsed="0.016331">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:31:20.216467" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:31:20.216594" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:31:20.216823" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:31:20.209869" elapsed="0.007944">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:31:20.218578" elapsed="0.000055"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:20.219590" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:20.220081" elapsed="0.000061"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:20.220600" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:20.221084" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:20.221573" elapsed="0.000045"/>
</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-10-20T23:31:20.222154" elapsed="0.000052"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:20.223301" elapsed="0.000080"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:20.222831" elapsed="0.000630"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:20.222360" elapsed="0.001158"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:20.224072" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:20.223639" elapsed="0.000555"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:20.223604" elapsed="0.000642"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:20.224806" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:20.224396" elapsed="0.000528"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:20.224360" elapsed="0.000616"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:31:20.219161" elapsed="0.005899"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:31:20.218747" elapsed="0.006375"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:31:20.208801" elapsed="0.016558">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:31:22.233911" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:31:22.234038" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:31:22.234286" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:31:22.227468" elapsed="0.007745">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:31:22.235849" elapsed="0.000051"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:22.236822" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:22.237302" elapsed="0.000069"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:22.237771" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:22.238243" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:22.238709" elapsed="0.000042"/>
</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-10-20T23:31:22.239180" elapsed="0.000043"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:22.239791" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:22.239397" elapsed="0.000598"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:22.239356" elapsed="0.000696"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:22.240615" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:22.240187" elapsed="0.000541"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:22.240154" elapsed="0.000623"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:22.241402" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:22.240882" elapsed="0.000653"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:22.240851" elapsed="0.000735"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:31:22.236434" elapsed="0.005201"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:31:22.236007" elapsed="0.005681"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:31:22.226583" elapsed="0.015304">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:31:24.250454" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:31:24.250594" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:31:24.250810" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:31:24.244081" elapsed="0.007706">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:31:24.252457" elapsed="0.000052"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:24.253428" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:24.253887" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:24.254372" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:24.254814" elapsed="0.000041"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:24.255287" elapsed="0.000074"/>
</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-10-20T23:31:24.255814" elapsed="0.000042"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:24.256442" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:24.256001" elapsed="0.000553"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:24.255961" elapsed="0.000646"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:24.257140" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:24.256718" elapsed="0.000535"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:24.256685" elapsed="0.000652"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:24.257840" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:24.257450" elapsed="0.000500"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:24.257417" elapsed="0.000582"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:31:24.252991" elapsed="0.005056"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:31:24.252616" elapsed="0.005504"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:31:24.243193" elapsed="0.015153">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:31:26.267867" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:31:26.268112" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:31:26.268425" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:31:26.260759" elapsed="0.008696">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:31:26.270074" elapsed="0.000055"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:26.271097" elapsed="0.000082"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:26.271667" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:26.272159" elapsed="0.000060"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:26.272666" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:26.273115" elapsed="0.000081"/>
</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-10-20T23:31:26.273663" elapsed="0.000044"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:26.274336" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:26.273855" elapsed="0.000605"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:26.273815" elapsed="0.000703"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:26.275043" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:26.274636" elapsed="0.000549"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:26.274603" elapsed="0.000650"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:26.275825" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:26.275415" elapsed="0.000523"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:26.275379" elapsed="0.000613"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:31:26.270684" elapsed="0.005358"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:31:26.270268" elapsed="0.005827"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:31:26.259732" elapsed="0.016639">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:31:28.285822" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:31:28.285974" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:31:28.286232" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:31:28.278882" elapsed="0.008478">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:31:28.288111" elapsed="0.000054"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:28.289462" elapsed="0.000069"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:28.290096" elapsed="0.000060"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:28.290821" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:28.291369" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:28.291823" elapsed="0.000042"/>
</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-10-20T23:31:28.292419" elapsed="0.000065"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:28.293218" elapsed="0.000066"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:28.292646" elapsed="0.000770"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:28.292605" elapsed="0.000887"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:28.294041" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:28.293610" elapsed="0.000597"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:28.293577" elapsed="0.000712"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:28.294976" elapsed="0.000061"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:28.294456" elapsed="0.000681"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:28.294421" elapsed="0.000816"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:31:28.288866" elapsed="0.006471"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:31:28.288336" elapsed="0.007063"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:31:28.277807" elapsed="0.017847">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:31:30.305508" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:31:30.305662" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:31:30.305887" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:31:30.298516" elapsed="0.008511">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:31:30.307807" elapsed="0.000059"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:30.309536" elapsed="0.000076"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:30.310125" elapsed="0.000067"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:30.310750" elapsed="0.000071"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:30.311418" elapsed="0.000058"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:30.312087" elapsed="0.000057"/>
</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-10-20T23:31:30.312708" elapsed="0.000069"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:30.313550" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:30.313020" elapsed="0.000656"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:30.312960" elapsed="0.000774"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:30.314419" elapsed="0.000063"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:30.313867" elapsed="0.000693"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:30.313821" elapsed="0.000886"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:30.315459" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:30.314888" elapsed="0.000698"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:30.314834" elapsed="0.000807"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:31:30.308982" elapsed="0.006716"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:31:30.308017" elapsed="0.007761"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:31:30.297269" elapsed="0.018773">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:31:32.324979" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:31:32.325102" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:31:32.325375" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:31:32.318261" elapsed="0.007969">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:31:32.326889" elapsed="0.000051"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:32.327888" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:32.328392" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:32.328842" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:32.329330" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:32.329789" elapsed="0.000042"/>
</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-10-20T23:31:32.330241" elapsed="0.000061"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:32.330873" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:32.330480" elapsed="0.000502"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:32.330438" elapsed="0.000597"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:32.331581" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:32.331146" elapsed="0.000547"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:32.331114" elapsed="0.000640"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:32.332250" elapsed="0.000091"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:32.331863" elapsed="0.000550"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:32.331831" elapsed="0.000631"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:31:32.327493" elapsed="0.005018"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:31:32.327045" elapsed="0.005519"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:31:32.317407" elapsed="0.015353">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:31:34.341509" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:31:34.341632" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:31:34.341942" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:31:34.335019" elapsed="0.007880">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:31:34.343636" elapsed="0.000061"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:34.344667" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:34.345147" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:34.345659" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:34.346102" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:34.346618" elapsed="0.000046"/>
</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-10-20T23:31:34.347078" elapsed="0.000042"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:34.347795" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:34.347365" elapsed="0.000546"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:34.347271" elapsed="0.000695"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:34.348548" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:34.348077" elapsed="0.000591"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:34.348045" elapsed="0.000672"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:34.349216" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:34.348826" elapsed="0.000565"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:34.348795" elapsed="0.000650"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:31:34.344219" elapsed="0.005276"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:31:34.343815" elapsed="0.005731"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:31:34.334089" elapsed="0.015656">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:31:36.358780" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:31:36.358901" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:31:36.359128" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:31:36.352257" elapsed="0.007795">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:31:36.360701" elapsed="0.000051"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:36.361661" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:36.362117" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:36.362616" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:36.363062" elapsed="0.000040"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:36.363552" elapsed="0.000042"/>
</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-10-20T23:31:36.364099" elapsed="0.000044"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:36.364736" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:36.364288" elapsed="0.000559"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:36.364250" elapsed="0.000650"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:36.365448" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:36.365011" elapsed="0.000550"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:36.364979" elapsed="0.000633"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:36.366111" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:36.365721" elapsed="0.000500"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:36.365689" elapsed="0.000581"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:31:36.361223" elapsed="0.005142"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:31:36.360856" elapsed="0.005568"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:31:36.351444" elapsed="0.015179">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:31:38.375555" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:31:38.375692" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:31:38.375928" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:31:38.368838" elapsed="0.008081">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:31:38.377602" elapsed="0.000052"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:38.378619" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:38.379109" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:38.379615" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:38.380105" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:38.380633" elapsed="0.000047"/>
</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-10-20T23:31:38.381142" elapsed="0.000045"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:38.381817" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:38.381375" elapsed="0.000577"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:38.381302" elapsed="0.000722"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:38.382599" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:38.382139" elapsed="0.000581"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:38.382106" elapsed="0.000664"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:38.383295" elapsed="0.000078"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:38.382880" elapsed="0.000588"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:38.382849" elapsed="0.000670"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:31:38.378164" elapsed="0.005425"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:31:38.377778" elapsed="0.005866"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:31:38.367896" elapsed="0.015946">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:31:40.392511" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:31:40.392636" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:31:40.392852" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:31:40.386055" elapsed="0.008125">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:31:40.395092" elapsed="0.000064"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:40.396600" elapsed="0.000061"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:40.397171" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:40.397770" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:40.398342" elapsed="0.000108"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:40.398995" elapsed="0.000052"/>
</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-10-20T23:31:40.399583" elapsed="0.000046"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:40.400200" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:40.399780" elapsed="0.000559"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:40.399739" elapsed="0.000659"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:40.400923" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:40.400532" elapsed="0.000500"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:40.400498" elapsed="0.000583"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:40.401684" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:40.401188" elapsed="0.000623"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:40.401157" elapsed="0.000703"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:31:40.395890" elapsed="0.006018"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:31:40.395293" elapsed="0.006669"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:31:40.385187" elapsed="0.016984">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:31:42.410762" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:31:42.410887" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:31:42.411104" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:31:42.404212" elapsed="0.007794">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:31:42.412757" elapsed="0.000053"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:42.413745" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:42.414201" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:42.414695" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:42.415139" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:42.415631" elapsed="0.000044"/>
</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-10-20T23:31:42.416088" elapsed="0.000042"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:42.416722" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:42.416276" elapsed="0.000560"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:42.416236" elapsed="0.000653"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:42.417428" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:42.417000" elapsed="0.000564"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:42.416968" elapsed="0.000645"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:42.418112" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:42.417723" elapsed="0.000500"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:42.417691" elapsed="0.000581"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:31:42.413303" elapsed="0.005046"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:31:42.412917" elapsed="0.005488"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:31:42.403371" elapsed="0.015256">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:31:44.427267" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:31:44.427433" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:31:44.427679" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:31:44.420894" elapsed="0.007705">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:31:44.429200" elapsed="0.000050"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:44.430183" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:44.430693" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:44.431133" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:44.431622" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:44.432083" elapsed="0.000042"/>
</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-10-20T23:31:44.432588" elapsed="0.000045"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:44.436092" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:44.435657" elapsed="0.000640"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:44.432738" elapsed="0.003646"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:44.436929" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:44.436508" elapsed="0.000536"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:44.436474" elapsed="0.000619"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:44.437645" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:44.437202" elapsed="0.000560"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:44.437170" elapsed="0.000642"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:31:44.429799" elapsed="0.008060"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:31:44.429385" elapsed="0.008529"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:31:44.419944" elapsed="0.018169">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:31:46.446796" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:31:46.446918" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:31:46.447133" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:31:46.440242" elapsed="0.007802">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:31:46.448686" elapsed="0.000053"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:46.449651" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:46.450112" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:46.450604" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:46.451043" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:46.451511" elapsed="0.000042"/>
</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-10-20T23:31:46.451995" elapsed="0.000042"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:46.452625" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:46.452180" elapsed="0.000560"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:46.452141" elapsed="0.000652"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:46.453292" elapsed="0.000072"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:46.452904" elapsed="0.000530"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:46.452871" elapsed="0.000613"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:46.454010" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:46.453614" elapsed="0.000507"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:46.453561" elapsed="0.000610"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:31:46.449214" elapsed="0.005006"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:31:46.448844" elapsed="0.005428"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:31:46.439368" elapsed="0.015130">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:31:48.463045" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:31:48.463268" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:31:48.463537" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:31:48.456774" elapsed="0.007698">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:31:48.465095" elapsed="0.000052"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:48.466095" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:48.466594" elapsed="0.000067"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:48.467075" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:48.467558" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:48.468036" elapsed="0.000044"/>
</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-10-20T23:31:48.468533" elapsed="0.000047"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:48.469157" elapsed="0.000059"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:48.468756" elapsed="0.000529"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:48.468715" elapsed="0.000654"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:48.469909" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:48.469484" elapsed="0.000537"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:48.469451" elapsed="0.000619"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:48.470601" elapsed="0.000062"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:48.470179" elapsed="0.000554"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:48.470147" elapsed="0.000636"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:31:48.465698" elapsed="0.005134"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:31:48.465255" elapsed="0.005630"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:31:48.455837" elapsed="0.015302">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:31:50.546608" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:31:50.546731" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:31:50.546900" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:31:50.473295" elapsed="0.074206">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:31:50.547942" elapsed="0.000038"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:50.548577" elapsed="0.000031"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:50.548889" elapsed="0.000029"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:50.549256" elapsed="0.000029"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:50.549563" elapsed="0.000028"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:50.549867" elapsed="0.000029"/>
</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-10-20T23:31:50.550162" elapsed="0.000027"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:50.550569" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:50.550287" elapsed="0.000357"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:50.550259" elapsed="0.000442"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:50.551029" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:50.550776" elapsed="0.000329"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:50.550754" elapsed="0.000383"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:50.551513" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:50.551210" elapsed="0.000398"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:50.551188" elapsed="0.000460"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:31:50.548327" elapsed="0.003382"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:31:50.548051" elapsed="0.003694"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:31:50.472414" elapsed="0.079467">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:31:52.560824" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:31:52.560949" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:31:52.561171" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:31:52.554016" elapsed="0.008090">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:31:52.562766" elapsed="0.000051"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:52.563750" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:52.564219" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:52.564733" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:52.565180" elapsed="0.000041"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:52.565647" elapsed="0.000042"/>
</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-10-20T23:31:52.566150" elapsed="0.000043"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:52.566787" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:52.566370" elapsed="0.000528"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:52.566299" elapsed="0.000656"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:52.567481" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:52.567065" elapsed="0.000527"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:52.567033" elapsed="0.000717"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:52.568259" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:52.567869" elapsed="0.000531"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:52.567836" elapsed="0.000613"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:31:52.563304" elapsed="0.005194"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:31:52.562929" elapsed="0.005622"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:31:52.553117" elapsed="0.015654">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:31:54.577907" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:31:54.578031" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:31:54.578262" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:31:54.570978" elapsed="0.008211">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:31:54.579838" elapsed="0.000051"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:54.580811" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:54.581267" elapsed="0.000069"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:54.581779" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:54.582223" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:54.582691" elapsed="0.000042"/>
</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-10-20T23:31:54.583168" elapsed="0.000043"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:54.583811" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:54.583388" elapsed="0.000537"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:54.583346" elapsed="0.000634"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:54.584517" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:54.584093" elapsed="0.000538"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:54.584060" elapsed="0.000621"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:54.585206" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:54.584811" elapsed="0.000537"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:54.584778" elapsed="0.000622"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:31:54.580402" elapsed="0.005047"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:31:54.579997" elapsed="0.005504"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:31:54.570074" elapsed="0.015629">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:31:56.596598" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:31:56.596723" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:31:56.597083" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:31:56.588022" elapsed="0.009991">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:31:56.598637" elapsed="0.000050"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:56.599611" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:56.600087" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:56.600578" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:56.601046" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:56.601521" elapsed="0.000043"/>
</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-10-20T23:31:56.602011" elapsed="0.000043"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:56.602630" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:56.602202" elapsed="0.000542"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:56.602162" elapsed="0.000657"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:56.603353" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:56.602934" elapsed="0.000533"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:56.602901" elapsed="0.000615"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:56.604036" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:56.603625" elapsed="0.000524"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:56.603593" elapsed="0.000605"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:31:56.599195" elapsed="0.005052"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:31:56.598816" elapsed="0.005485"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:31:56.587086" elapsed="0.017446">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:31:58.614161" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:31:58.614283" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:31:58.614547" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:31:58.606727" elapsed="0.009158">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:31:58.616504" elapsed="0.000049"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:58.617467" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:58.617948" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:58.618437" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:58.618917" elapsed="0.000058"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:58.619523" elapsed="0.000048"/>
</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-10-20T23:31:58.620108" elapsed="0.000044"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:58.620732" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:58.620299" elapsed="0.000566"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:58.620259" elapsed="0.000663"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:58.621450" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:58.621033" elapsed="0.000527"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:58.621001" elapsed="0.000609"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:31:58.622125" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:31:58.621716" elapsed="0.000519"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:31:58.621685" elapsed="0.000598"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:31:58.617052" elapsed="0.005323"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:31:58.616657" elapsed="0.005788"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:31:58.605814" elapsed="0.016879">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:32:00.631718" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:32:00.631843" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:32:00.632088" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:32:00.624936" elapsed="0.008058">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:32:00.633620" elapsed="0.000049"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:00.634577" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:00.635047" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:00.635517" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:00.635987" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:00.636466" elapsed="0.000049"/>
</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-10-20T23:32:00.636998" elapsed="0.000042"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:00.637637" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:00.637187" elapsed="0.000576"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:00.637148" elapsed="0.000668"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:00.638374" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:00.637947" elapsed="0.000545"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:00.637914" elapsed="0.000627"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:00.639057" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:00.638647" elapsed="0.000520"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:00.638616" elapsed="0.000601"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:32:00.634165" elapsed="0.005100"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:32:00.633773" elapsed="0.005572"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:32:00.624038" elapsed="0.015506">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:32:02.648351" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:32:02.648477" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:32:02.648694" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:32:02.641714" elapsed="0.007910">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:32:02.650236" elapsed="0.000049"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:02.651596" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:02.652083" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:02.652560" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:02.653023" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:02.653501" elapsed="0.000043"/>
</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-10-20T23:32:02.653985" elapsed="0.000043"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:02.654603" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:02.654176" elapsed="0.000539"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:02.654135" elapsed="0.000634"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:02.655296" elapsed="0.000070"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:02.654883" elapsed="0.000554"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:02.654851" elapsed="0.000635"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:02.656011" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:02.655598" elapsed="0.000525"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:02.655566" elapsed="0.000606"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:32:02.651171" elapsed="0.005050"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:32:02.650419" elapsed="0.005856"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:32:02.640837" elapsed="0.015667">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:32:04.664931" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:32:04.665078" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:32:04.665299" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:32:04.658553" elapsed="0.007660">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:32:04.666935" elapsed="0.000070"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:04.667909" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:04.668416" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:04.668859" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:04.669348" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:04.669793" elapsed="0.000043"/>
</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-10-20T23:32:04.670270" elapsed="0.000068"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:04.670888" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:04.670486" elapsed="0.000535"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:04.670446" elapsed="0.000630"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:04.671608" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:04.671189" elapsed="0.000532"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:04.671156" elapsed="0.000614"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:04.672289" elapsed="0.000070"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:04.671879" elapsed="0.000551"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:04.671847" elapsed="0.000632"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:32:04.667517" elapsed="0.005010"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:32:04.667112" elapsed="0.005467"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:32:04.657665" elapsed="0.015114">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:32:06.681477" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:32:06.681603" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:32:06.681835" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:32:06.674985" elapsed="0.007793">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:32:06.683431" elapsed="0.000050"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:06.684402" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:06.684898" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:06.685401" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:06.685850" elapsed="0.000041"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:06.686356" elapsed="0.000044"/>
</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-10-20T23:32:06.686816" elapsed="0.000041"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:06.687452" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:06.687025" elapsed="0.000647"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:06.686961" elapsed="0.000770"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:06.688264" elapsed="0.000070"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:06.687850" elapsed="0.000559"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:06.687812" elapsed="0.000646"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:06.688954" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:06.688566" elapsed="0.000524"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:06.688534" elapsed="0.000605"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:32:06.683966" elapsed="0.005222"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:32:06.683589" elapsed="0.005652"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:32:06.674096" elapsed="0.015373">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:32:08.699352" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:32:08.699501" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:32:08.699745" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:32:08.692194" elapsed="0.008488">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:32:08.701291" elapsed="0.000077"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:08.702250" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:08.702776" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:08.703242" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:08.703713" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:08.704173" elapsed="0.000042"/>
</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-10-20T23:32:08.704657" elapsed="0.000043"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:08.705263" elapsed="0.000067"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:08.704846" elapsed="0.000558"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:08.704806" elapsed="0.000653"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:08.705963" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:08.705572" elapsed="0.000525"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:08.705538" elapsed="0.000610"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:08.706673" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:08.706256" elapsed="0.000530"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:08.706225" elapsed="0.000610"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:32:08.701840" elapsed="0.005043"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:32:08.701471" elapsed="0.005464"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:32:08.691299" elapsed="0.015859">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:32:10.715670" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:32:10.715898" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:32:10.716140" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:32:10.709204" elapsed="0.007824">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:32:10.717734" elapsed="0.000052"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:10.718700" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:10.719176" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:10.719649" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:10.720089" elapsed="0.000066"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:10.720583" elapsed="0.000042"/>
</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-10-20T23:32:10.721040" elapsed="0.000042"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:10.721684" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:10.721257" elapsed="0.000539"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:10.721217" elapsed="0.000637"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:10.722400" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:10.721966" elapsed="0.000550"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:10.721933" elapsed="0.000635"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:10.723074" elapsed="0.000066"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:10.722678" elapsed="0.000536"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:10.722646" elapsed="0.000619"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:32:10.718291" elapsed="0.005050"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:32:10.717891" elapsed="0.005507"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:32:10.708363" elapsed="0.015237">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:32:12.733028" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:32:12.733181" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:32:12.733467" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:32:12.725839" elapsed="0.008607">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:32:12.735065" elapsed="0.000052"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:12.736083" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:12.736627" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:12.737226" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:12.737737" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:12.738237" elapsed="0.000047"/>
</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-10-20T23:32:12.738759" elapsed="0.000045"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:12.739437" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:12.738958" elapsed="0.000602"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:12.738916" elapsed="0.000702"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:12.740178" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:12.739739" elapsed="0.000562"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:12.739704" elapsed="0.000681"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:12.740922" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:12.740502" elapsed="0.000568"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:12.740468" elapsed="0.000656"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:32:12.735676" elapsed="0.005520"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:32:12.735247" elapsed="0.006008"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:32:12.724925" elapsed="0.016571">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:32:14.750230" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:32:14.750392" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:32:14.750614" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:32:14.743793" elapsed="0.007805">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:32:14.752223" elapsed="0.000050"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:14.753179" elapsed="0.000072"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:14.753738" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:14.754220" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:14.754763" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:14.755251" elapsed="0.000044"/>
</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-10-20T23:32:14.755751" elapsed="0.000043"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:14.756387" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:14.755944" elapsed="0.000558"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:14.755903" elapsed="0.000655"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:14.757057" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:14.756670" elapsed="0.000496"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:14.756638" elapsed="0.000726"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:14.757887" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:14.757489" elapsed="0.000510"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:14.757455" elapsed="0.000593"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:32:14.752795" elapsed="0.005301"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:32:14.752412" elapsed="0.005735"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:32:14.742813" elapsed="0.015592">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:32:16.767215" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:32:16.767398" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:32:16.767620" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:32:16.760678" elapsed="0.007867">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:32:16.769140" elapsed="0.000048"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:16.770120" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:16.770635" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:16.771564" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:16.772029" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:16.772588" elapsed="0.000044"/>
</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-10-20T23:32:16.773051" elapsed="0.000042"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:16.773704" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:16.773267" elapsed="0.000549"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:16.773201" elapsed="0.000670"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:16.774420" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:16.773983" elapsed="0.000551"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:16.773951" elapsed="0.000632"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:16.775075" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:16.774688" elapsed="0.000497"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:16.774657" elapsed="0.000604"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:32:16.769733" elapsed="0.005602"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:32:16.769351" elapsed="0.006040"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:32:16.759755" elapsed="0.015840">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:32:18.784396" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:32:18.784524" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:32:18.784854" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:32:18.777793" elapsed="0.007997">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:32:18.786449" elapsed="0.000052"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:18.787413" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:18.787871" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:18.788359" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:18.788804" elapsed="0.000041"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:18.789240" elapsed="0.000061"/>
</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-10-20T23:32:18.789754" elapsed="0.000041"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:18.790387" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:18.789945" elapsed="0.000557"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:18.789903" elapsed="0.000655"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:18.791057" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:18.790669" elapsed="0.000499"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:18.790637" elapsed="0.000581"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:18.791771" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:18.791374" elapsed="0.000508"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:18.791339" elapsed="0.000592"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:32:18.786983" elapsed="0.004995"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:32:18.786609" elapsed="0.005422"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:32:18.776901" elapsed="0.015334">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:32:20.801430" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:32:20.801559" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:32:20.801780" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:32:20.794511" elapsed="0.008193">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:32:20.803293" elapsed="0.000093"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:20.804252" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:20.804753" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:20.805191" elapsed="0.000041"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:20.805718" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:20.806178" elapsed="0.000041"/>
</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-10-20T23:32:20.806895" elapsed="0.000050"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:20.807580" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:20.807103" elapsed="0.000595"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:20.807061" elapsed="0.000691"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:20.808385" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:20.807898" elapsed="0.000612"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:20.807851" elapsed="0.000711"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:20.809068" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:20.808673" elapsed="0.000505"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:20.808641" elapsed="0.000586"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:32:20.803868" elapsed="0.005408"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:32:20.803491" elapsed="0.005884"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:32:20.793590" elapsed="0.015989">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:32:22.818983" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:32:22.819108" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:32:22.819415" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:32:22.812395" elapsed="0.007986">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:32:22.820997" elapsed="0.000052"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:22.822004" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:22.822524" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:22.823006" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:22.823510" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:22.823981" elapsed="0.000042"/>
</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-10-20T23:32:22.824540" elapsed="0.000047"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:22.825164" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:22.824761" elapsed="0.000515"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:22.824716" elapsed="0.000668"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:22.825924" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:22.825503" elapsed="0.000540"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:22.825470" elapsed="0.000621"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:22.826644" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:22.826199" elapsed="0.000574"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:22.826168" elapsed="0.000665"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:32:22.821609" elapsed="0.005274"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:32:22.821159" elapsed="0.005778"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:32:22.811477" elapsed="0.015662">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:32:24.836178" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:32:24.836393" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:32:24.836724" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:32:24.829432" elapsed="0.008583">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:32:24.838747" elapsed="0.000057"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:24.839762" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:24.840216" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:24.840702" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:24.841160" elapsed="0.000041"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:24.841650" elapsed="0.000042"/>
</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-10-20T23:32:24.842111" elapsed="0.000041"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:24.842745" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:24.842301" elapsed="0.000554"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:24.842259" elapsed="0.000652"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:24.843455" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:24.843023" elapsed="0.000545"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:24.842991" elapsed="0.000625"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:24.844109" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:24.843724" elapsed="0.000493"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:24.843693" elapsed="0.000571"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:32:24.839350" elapsed="0.004990"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:32:24.838917" elapsed="0.005483"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:32:24.828563" elapsed="0.016068">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:32:26.853915" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:32:26.854040" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:32:26.854815" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:32:26.846885" elapsed="0.008879">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:32:26.856505" elapsed="0.000056"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:26.857494" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:26.857972" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:26.858504" elapsed="0.000060"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:26.858979" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:26.859542" elapsed="0.000059"/>
</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-10-20T23:32:26.860130" elapsed="0.000065"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:26.860866" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:26.860428" elapsed="0.000559"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:26.860379" elapsed="0.000662"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:26.861612" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:26.861154" elapsed="0.000573"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:26.861122" elapsed="0.000655"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:26.862273" elapsed="0.000071"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:26.861884" elapsed="0.000532"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:26.861852" elapsed="0.000637"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:32:26.857047" elapsed="0.005495"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:32:26.856670" elapsed="0.005927"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:32:26.845984" elapsed="0.016823">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:32:28.870940" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:32:28.871063" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:32:28.871285" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:32:28.864890" elapsed="0.007330">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:32:28.872865" elapsed="0.000049"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:28.873838" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:28.874296" elapsed="0.000070"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:28.874787" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:28.875228" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:28.875715" elapsed="0.000043"/>
</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-10-20T23:32:28.876173" elapsed="0.000042"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:28.876832" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:28.876389" elapsed="0.000660"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:28.876347" elapsed="0.000758"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:28.877717" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:28.877218" elapsed="0.000622"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:28.877185" elapsed="0.000706"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:28.878445" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:28.877999" elapsed="0.000589"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:28.877968" elapsed="0.000671"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:32:28.873428" elapsed="0.005259"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:32:28.873020" elapsed="0.005722"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:32:28.864010" elapsed="0.014932">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:32:30.887674" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:32:30.887796" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:32:30.888015" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:32:30.881208" elapsed="0.007733">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:32:30.889592" elapsed="0.000051"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:30.890534" elapsed="0.000067"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:30.891010" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:30.891527" elapsed="0.000078"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:30.892030" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:30.892521" elapsed="0.000064"/>
</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-10-20T23:32:30.892999" elapsed="0.000042"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:30.894058" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:30.893640" elapsed="0.000532"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:30.893147" elapsed="0.001082"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:30.894891" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:30.894399" elapsed="0.000624"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:30.894355" elapsed="0.000719"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:30.895655" elapsed="0.000059"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:30.895184" elapsed="0.000608"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:30.895153" elapsed="0.000688"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:32:30.890121" elapsed="0.005769"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:32:30.889748" elapsed="0.006193"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:32:30.880285" elapsed="0.015857">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:32:32.903737" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:32:32.903904" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:32:32.904054" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:32:32.897980" elapsed="0.006687">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:32:32.905069" elapsed="0.000031"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:32.905687" elapsed="0.000030"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:32.905974" elapsed="0.000027"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:32.906252" elapsed="0.000027"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:32.906553" elapsed="0.000028"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:32.906849" elapsed="0.000027"/>
</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-10-20T23:32:32.907138" elapsed="0.000027"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:32.907529" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:32.907259" elapsed="0.000357"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:32.907233" elapsed="0.000416"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:32.907964" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:32.907720" elapsed="0.000316"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:32.907700" elapsed="0.000366"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:32.908395" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:32.908133" elapsed="0.000334"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:32.908113" elapsed="0.000384"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:32:32.905430" elapsed="0.003097"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:32:32.905169" elapsed="0.003391"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:32:32.897262" elapsed="0.011439">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:32:34.917845" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:32:34.917970" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:32:34.918209" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:32:34.910869" elapsed="0.008302">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:32:34.919844" elapsed="0.000050"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:34.920862" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:34.921381" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:34.921971" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:34.922479" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:34.922985" elapsed="0.000045"/>
</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-10-20T23:32:34.923501" elapsed="0.000046"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:34.924144" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:34.923735" elapsed="0.000523"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:34.923689" elapsed="0.000657"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:34.924911" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:34.924489" elapsed="0.000539"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:34.924454" elapsed="0.000623"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:34.925658" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:34.925185" elapsed="0.000597"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:34.925154" elapsed="0.000676"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:32:34.920437" elapsed="0.005441"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:32:34.920005" elapsed="0.005927"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:32:34.909939" elapsed="0.016195">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:32:36.934945" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:32:36.935070" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:32:36.935336" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:32:36.928872" elapsed="0.007352">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:32:36.936923" elapsed="0.000052"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:36.937897" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:36.938385" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:36.938850" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:36.939362" elapsed="0.000060"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:36.939859" elapsed="0.000044"/>
</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-10-20T23:32:36.940408" elapsed="0.000056"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:36.941056" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:36.940618" elapsed="0.000551"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:36.940577" elapsed="0.000648"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:36.941783" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:36.941368" elapsed="0.000526"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:36.941304" elapsed="0.000735"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:36.942584" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:36.942159" elapsed="0.000559"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:36.942125" elapsed="0.000645"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:32:36.937487" elapsed="0.005332"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:32:36.937079" elapsed="0.005795"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:32:36.927455" elapsed="0.015618">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:32:38.951848" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:32:38.951972" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:32:38.952188" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:32:38.945215" elapsed="0.007896">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:32:38.953755" elapsed="0.000051"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:38.954706" elapsed="0.000070"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:38.955193" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:38.955666" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:38.956129" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:38.956597" elapsed="0.000043"/>
</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-10-20T23:32:38.957100" elapsed="0.000045"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:38.957723" elapsed="0.000065"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:38.957293" elapsed="0.000565"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:38.957252" elapsed="0.000659"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:38.958440" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:38.958024" elapsed="0.000527"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:38.957991" elapsed="0.000609"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:38.959116" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:38.958707" elapsed="0.000521"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:38.958676" elapsed="0.000601"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:32:38.954287" elapsed="0.005067"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:32:38.953912" elapsed="0.005497"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:32:38.944353" elapsed="0.015252">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:32:40.968344" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:32:40.968481" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:32:40.968846" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:32:40.961806" elapsed="0.008028">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:32:40.970491" elapsed="0.000054"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:40.972024" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:40.972558" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:40.973075" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:40.973587" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:40.974092" elapsed="0.000046"/>
</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-10-20T23:32:40.974617" elapsed="0.000046"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:40.975280" elapsed="0.000074"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:40.974843" elapsed="0.000590"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:40.974799" elapsed="0.000692"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:40.976053" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:40.975612" elapsed="0.000563"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:40.975577" elapsed="0.000651"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:40.976821" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:40.976375" elapsed="0.000570"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:40.976339" elapsed="0.000658"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:32:40.971564" elapsed="0.005485"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:32:40.970655" elapsed="0.006451"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:32:40.960895" elapsed="0.016454">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:32:42.985787" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:32:42.985938" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:32:42.986187" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:32:42.979470" elapsed="0.007710">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:32:42.987814" elapsed="0.000071"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:42.988815" elapsed="0.000074"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:42.989361" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:42.989842" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:42.990347" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:42.990805" elapsed="0.000065"/>
</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-10-20T23:32:42.991458" elapsed="0.000049"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:42.992091" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:42.991663" elapsed="0.000558"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:42.991622" elapsed="0.000664"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:42.992861" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:42.992440" elapsed="0.000539"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:42.992403" elapsed="0.000627"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:42.993587" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:42.993142" elapsed="0.000565"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:42.993109" elapsed="0.000648"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:32:42.988426" elapsed="0.005382"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:32:42.987992" elapsed="0.005895"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:32:42.978610" elapsed="0.015481">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:32:45.002568" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:32:45.002695" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:32:45.002943" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:32:44.996359" elapsed="0.007544">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:32:45.004554" elapsed="0.000051"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:45.005563" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:45.006048" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:45.006550" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:45.007027" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:45.007532" elapsed="0.000046"/>
</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-10-20T23:32:45.008021" elapsed="0.000044"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:45.008685" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:45.008223" elapsed="0.000580"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:45.008180" elapsed="0.000678"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:45.009454" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:45.009003" elapsed="0.000572"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:45.008969" elapsed="0.000656"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:45.010152" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:45.009736" elapsed="0.000531"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:45.009704" elapsed="0.000656"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:32:45.005126" elapsed="0.005297"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:32:45.004715" elapsed="0.005764"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:32:44.995381" elapsed="0.015309">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:32:47.022788" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:32:47.022946" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:32:47.023207" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:32:47.016551" elapsed="0.007688">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:32:47.024875" elapsed="0.000072"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:47.025878" elapsed="0.000069"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:47.026416" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:47.026870" elapsed="0.000065"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:47.027394" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:47.027850" elapsed="0.000041"/>
</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-10-20T23:32:47.028407" elapsed="0.000050"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:47.029039" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:47.028609" elapsed="0.000544"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:47.028567" elapsed="0.000661"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:47.029779" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:47.029383" elapsed="0.000507"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:47.029348" elapsed="0.000614"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:47.030522" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:47.030075" elapsed="0.000566"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:47.030044" elapsed="0.000647"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:32:47.025487" elapsed="0.005251"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:32:47.025071" elapsed="0.005723"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:32:47.015640" elapsed="0.015383">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:32:49.039610" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:32:49.039737" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:32:49.039994" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:32:49.033252" elapsed="0.007668">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:32:49.041724" elapsed="0.000055"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:49.042800" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:49.043294" elapsed="0.000076"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:49.043779" elapsed="0.000056"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:49.044286" elapsed="0.000078"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:49.044802" elapsed="0.000052"/>
</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-10-20T23:32:49.045345" elapsed="0.000046"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:49.046088" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:49.045547" elapsed="0.000678"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:49.045505" elapsed="0.000779"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:49.046865" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:49.046462" elapsed="0.000573"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:49.046420" elapsed="0.000669"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:49.047627" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:49.047200" elapsed="0.000543"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:49.047167" elapsed="0.000625"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:32:49.042341" elapsed="0.005500"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:32:49.041892" elapsed="0.006001"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:32:49.032336" elapsed="0.015781">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:32:51.057254" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:32:51.057450" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:32:51.057686" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:32:51.050387" elapsed="0.008234">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:32:51.059263" elapsed="0.000076"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:51.060805" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:51.061292" elapsed="0.000081"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:51.061782" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:51.062409" elapsed="0.000069"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:51.063046" elapsed="0.000056"/>
</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-10-20T23:32:51.063599" elapsed="0.000046"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:51.064221" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:51.063796" elapsed="0.000714"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:51.063755" elapsed="0.000819"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:51.065130" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:51.064696" elapsed="0.000552"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:51.064661" elapsed="0.000638"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:51.065870" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:51.065473" elapsed="0.000509"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:51.065438" elapsed="0.000617"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:32:51.060403" elapsed="0.005702"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:32:51.059455" elapsed="0.006707"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:32:51.049428" elapsed="0.016966">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:32:53.074810" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:32:53.074935" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:32:53.075189" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:32:53.068650" elapsed="0.007504">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:32:53.076818" elapsed="0.000051"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:53.077827" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:53.078341" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:53.078817" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:53.079286" elapsed="0.000070"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:53.079780" elapsed="0.000048"/>
</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-10-20T23:32:53.080288" elapsed="0.000074"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:53.080947" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:53.080522" elapsed="0.000564"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:53.080479" elapsed="0.000666"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:53.081685" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:53.081259" elapsed="0.000559"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:53.081224" elapsed="0.000649"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:53.082438" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:53.081988" elapsed="0.000570"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:53.081953" elapsed="0.000657"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:32:53.077410" elapsed="0.005277"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:32:53.076979" elapsed="0.005766"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:32:53.067704" elapsed="0.015267">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:32:55.092797" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:32:55.093077" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:32:55.093407" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:32:55.085357" elapsed="0.009107">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:32:55.095142" elapsed="0.000064"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:55.096179" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:55.096687" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:55.097182" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:55.097674" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:55.098164" elapsed="0.000061"/>
</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-10-20T23:32:55.098690" elapsed="0.000046"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:55.099373" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:55.098887" elapsed="0.000612"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:55.098846" elapsed="0.000708"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:55.100063" elapsed="0.000070"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:55.099668" elapsed="0.000551"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:55.099635" elapsed="0.000653"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:55.100838" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:55.100440" elapsed="0.000510"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:55.100406" elapsed="0.000593"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:32:55.095735" elapsed="0.005312"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:32:55.095353" elapsed="0.005770"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:32:55.084396" elapsed="0.016990">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:32:57.111295" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:32:57.111479" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:32:57.111724" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:32:57.104176" elapsed="0.008476">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:32:57.113266" elapsed="0.000077"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:57.114232" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:57.114723" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:57.115293" elapsed="0.000071"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:57.115767" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:57.116235" elapsed="0.000043"/>
</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-10-20T23:32:57.116723" elapsed="0.000043"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:57.117359" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:57.116914" elapsed="0.000559"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:57.116873" elapsed="0.000655"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:57.118037" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:57.117645" elapsed="0.000522"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:57.117611" elapsed="0.000608"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:57.118751" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:57.118358" elapsed="0.000505"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:57.118297" elapsed="0.000615"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:32:57.113826" elapsed="0.005135"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:32:57.113447" elapsed="0.005567"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:32:57.103347" elapsed="0.015886">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:32:59.128360" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:32:59.128495" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:32:59.128732" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:32:59.121599" elapsed="0.008119">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:32:59.130405" elapsed="0.000054"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:59.131430" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:59.131923" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:59.132451" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:59.132928" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:59.133444" elapsed="0.000045"/>
</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-10-20T23:32:59.133934" elapsed="0.000045"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:59.134614" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:59.134134" elapsed="0.000600"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:59.134090" elapsed="0.000702"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:59.135386" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:59.134911" elapsed="0.000598"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:59.134876" elapsed="0.000799"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:32:59.136248" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:32:59.135802" elapsed="0.000594"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:32:59.135767" elapsed="0.000683"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:32:59.130965" elapsed="0.005537"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:32:59.130570" elapsed="0.005988"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:32:59.120620" elapsed="0.016154">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:33:01.145730" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:33:01.145856" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:33:01.146080" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:33:01.138994" elapsed="0.008016">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:33:01.147655" elapsed="0.000049"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:01.149107" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:01.149620" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:01.150066" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:01.150557" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:01.151002" elapsed="0.000042"/>
</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-10-20T23:33:01.151508" elapsed="0.000044"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:01.152104" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:01.151701" elapsed="0.000514"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:01.151660" elapsed="0.000630"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:01.152833" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:01.152436" elapsed="0.000507"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:01.152401" elapsed="0.000592"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:01.153539" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:01.153103" elapsed="0.000552"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:01.153071" elapsed="0.000634"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:33:01.148711" elapsed="0.005044"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:33:01.147810" elapsed="0.005999"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:33:01.138079" elapsed="0.015930">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:33:03.163592" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:33:03.163720" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:33:03.164076" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:33:03.157087" elapsed="0.007965">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:33:03.165700" elapsed="0.000050"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:03.166669" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:03.167125" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:03.167616" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:03.168062" elapsed="0.000041"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:03.168553" elapsed="0.000042"/>
</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-10-20T23:33:03.169013" elapsed="0.000042"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:03.169646" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:03.169201" elapsed="0.000559"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:03.169162" elapsed="0.000652"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:03.170360" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:03.169924" elapsed="0.000552"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:03.169892" elapsed="0.000634"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:03.171022" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:03.170634" elapsed="0.000499"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:03.170602" elapsed="0.000582"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:33:03.166235" elapsed="0.004997"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:33:03.165858" elapsed="0.005445"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:33:03.156073" elapsed="0.015459">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:33:05.181165" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:33:05.181290" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:33:05.181588" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:33:05.173718" elapsed="0.008843">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:33:05.183191" elapsed="0.000051"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:05.184195" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:05.184727" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:05.185202" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:05.185710" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:05.186193" elapsed="0.000044"/>
</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-10-20T23:33:05.186824" elapsed="0.000045"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:05.187515" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:05.187048" elapsed="0.000588"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:05.187004" elapsed="0.000686"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:05.188228" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:05.187806" elapsed="0.000609"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:05.187772" elapsed="0.000702"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:05.188994" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:05.188586" elapsed="0.000541"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:05.188553" elapsed="0.000626"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:33:05.183783" elapsed="0.005447"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:33:05.183411" elapsed="0.005871"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:33:05.172796" elapsed="0.016749">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:33:07.198436" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:33:07.198565" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:33:07.198803" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:33:07.192279" elapsed="0.007486">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:33:07.200449" elapsed="0.000054"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:07.201458" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:07.201924" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:07.202444" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:07.202893" elapsed="0.000041"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:07.203409" elapsed="0.000047"/>
</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-10-20T23:33:07.203877" elapsed="0.000042"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:07.204546" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:07.204069" elapsed="0.000595"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:07.204027" elapsed="0.000692"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:07.205248" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:07.204833" elapsed="0.000701"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:07.204800" elapsed="0.000794"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:07.206224" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:07.205708" elapsed="0.000696"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:07.205675" elapsed="0.000786"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:33:07.201008" elapsed="0.005503"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:33:07.200617" elapsed="0.005946"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:33:07.191411" elapsed="0.015356">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:33:09.217120" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:33:09.217252" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:33:09.217564" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:33:09.209897" elapsed="0.008696">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:33:09.219218" elapsed="0.000051"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:09.220252" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:09.220832" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:09.221334" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:09.221955" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:09.222479" elapsed="0.000046"/>
</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-10-20T23:33:09.222969" elapsed="0.000044"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:09.223648" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:09.223168" elapsed="0.000602"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:09.223126" elapsed="0.000701"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:09.224398" elapsed="0.000067"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:09.223948" elapsed="0.000594"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:09.223913" elapsed="0.000682"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:09.225135" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:09.224712" elapsed="0.000540"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:09.224678" elapsed="0.000656"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:33:09.219841" elapsed="0.005550"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:33:09.219412" elapsed="0.006056"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:33:09.208885" elapsed="0.016798">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:33:11.235069" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:33:11.235198" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:33:11.235512" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:33:11.228576" elapsed="0.008462">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:33:11.237907" elapsed="0.000055"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:11.238930" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:11.239440" elapsed="0.000068"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:11.239943" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:11.240437" elapsed="0.000067"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:11.240943" elapsed="0.000046"/>
</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-10-20T23:33:11.241447" elapsed="0.000070"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:11.242136" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:11.241698" elapsed="0.000558"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:11.241642" elapsed="0.000705"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:11.242935" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:11.242468" elapsed="0.000590"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:11.242435" elapsed="0.000675"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:11.243684" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:11.243225" elapsed="0.000599"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:11.243191" elapsed="0.000687"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:33:11.238512" elapsed="0.005417"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:33:11.238077" elapsed="0.005908"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:33:11.227561" elapsed="0.016627">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:33:13.252835" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:33:13.252959" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:33:13.253174" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:33:13.246408" elapsed="0.007687">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:33:13.254752" elapsed="0.000058"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:13.255758" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:13.256209" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:13.256698" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:13.257141" elapsed="0.000041"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:13.257625" elapsed="0.000043"/>
</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-10-20T23:33:13.258121" elapsed="0.000043"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:13.258757" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:13.258335" elapsed="0.000634"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:13.258268" elapsed="0.000758"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:13.259588" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:13.259140" elapsed="0.000566"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:13.259106" elapsed="0.000651"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:13.260267" elapsed="0.000070"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:13.259868" elapsed="0.000543"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:13.259835" elapsed="0.000626"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:33:13.255341" elapsed="0.005169"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:33:13.254930" elapsed="0.005655"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:33:13.245471" elapsed="0.015331">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:33:15.269558" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:33:15.269716" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:33:15.269934" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:33:15.263113" elapsed="0.007739">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:33:15.271547" elapsed="0.000086"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:15.272676" elapsed="0.000058"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:15.273156" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:15.273678" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:15.274130" elapsed="0.000041"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:15.274672" elapsed="0.000047"/>
</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-10-20T23:33:15.275137" elapsed="0.000041"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:15.276233" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:15.275806" elapsed="0.000600"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:15.275290" elapsed="0.001177"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:15.277016" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:15.276613" elapsed="0.000516"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:15.276551" elapsed="0.000629"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:15.277736" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:15.277289" elapsed="0.000561"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:15.277257" elapsed="0.000643"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:33:15.272124" elapsed="0.005824"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:33:15.271751" elapsed="0.006250"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:33:15.262162" elapsed="0.016036">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:33:17.287430" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:33:17.287722" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:33:17.288001" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:33:17.280773" elapsed="0.008351">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:33:17.289893" elapsed="0.000056"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:17.290959" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:17.291461" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:17.291963" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:17.292525" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:17.293023" elapsed="0.000044"/>
</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-10-20T23:33:17.293510" elapsed="0.000043"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:17.294118" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:17.293723" elapsed="0.000543"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:17.293682" elapsed="0.000679"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:17.295017" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:17.294499" elapsed="0.000644"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:17.294452" elapsed="0.000742"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:17.295808" elapsed="0.000063"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:17.295338" elapsed="0.000628"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:17.295274" elapsed="0.000745"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:33:17.290474" elapsed="0.005595"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:33:17.290059" elapsed="0.006062"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:33:17.279717" elapsed="0.016662">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:33:19.304444" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:33:19.304569" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:33:19.304809" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:33:19.298627" elapsed="0.007094">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:33:19.306341" elapsed="0.000050"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:19.307278" elapsed="0.000075"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:19.307788" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:19.308388" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:19.308856" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:19.309299" elapsed="0.000068"/>
</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-10-20T23:33:19.309802" elapsed="0.000043"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:19.310419" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:19.309990" elapsed="0.000542"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:19.309951" elapsed="0.000635"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:19.311113" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:19.310722" elapsed="0.000503"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:19.310665" elapsed="0.000609"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:19.311822" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:19.311412" elapsed="0.000524"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:19.311379" elapsed="0.000605"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:33:19.306891" elapsed="0.005142"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:33:19.306493" elapsed="0.005594"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:33:19.297704" elapsed="0.014578">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:33:21.321366" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:33:21.321506" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:33:21.321768" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:33:21.314580" elapsed="0.008121">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:33:21.323339" elapsed="0.000050"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:21.324277" elapsed="0.000075"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:21.324781" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:21.325244" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:21.325736" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:21.326178" elapsed="0.000041"/>
</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-10-20T23:33:21.326660" elapsed="0.000043"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:21.327268" elapsed="0.000067"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:21.326872" elapsed="0.000535"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:21.326830" elapsed="0.000634"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:21.327989" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:21.327577" elapsed="0.000524"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:21.327543" elapsed="0.000700"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:21.328802" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:21.328393" elapsed="0.000522"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:21.328357" elapsed="0.000606"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:33:21.323894" elapsed="0.005117"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:33:21.323494" elapsed="0.005570"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:33:21.313629" elapsed="0.015632">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:33:23.337984" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:33:23.338106" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:33:23.338361" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:33:23.331356" elapsed="0.007892">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:33:23.339888" elapsed="0.000050"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:23.340836" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:23.341292" elapsed="0.000070"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:23.341784" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:23.342226" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:23.342696" elapsed="0.000042"/>
</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-10-20T23:33:23.343217" elapsed="0.000043"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:23.343851" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:23.343435" elapsed="0.000529"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:23.343394" elapsed="0.000623"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:23.344546" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:23.344128" elapsed="0.000529"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:23.344096" elapsed="0.000611"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:23.345227" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:23.344840" elapsed="0.000528"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:23.344806" elapsed="0.000613"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:33:23.340437" elapsed="0.005031"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:33:23.340043" elapsed="0.005477"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:33:23.330493" elapsed="0.015224">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:33:25.354052" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:33:25.354177" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:33:25.354612" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:33:25.347925" elapsed="0.007613">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:33:25.356157" elapsed="0.000049"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:25.357594" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:25.358112" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:25.358600" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:25.359070" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:25.359546" elapsed="0.000043"/>
</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-10-20T23:33:25.360054" elapsed="0.000043"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:25.360680" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:25.360249" elapsed="0.000544"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:25.360207" elapsed="0.000666"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:25.361454" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:25.360987" elapsed="0.000585"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:25.360953" elapsed="0.000668"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:25.362142" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:25.361731" elapsed="0.000524"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:25.361699" elapsed="0.000605"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:33:25.357152" elapsed="0.005232"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:33:25.356338" elapsed="0.006102"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:33:25.347016" elapsed="0.015640">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:33:27.370954" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:33:27.371079" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:33:27.371300" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:33:27.364791" elapsed="0.007423">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:33:27.372843" elapsed="0.000070"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:27.373816" elapsed="0.000066"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:27.374294" elapsed="0.000071"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:27.374763" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:27.375222" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:27.375694" elapsed="0.000042"/>
</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-10-20T23:33:27.376274" elapsed="0.000074"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:27.376950" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:27.376500" elapsed="0.000566"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:27.376459" elapsed="0.000661"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:27.377662" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:27.377233" elapsed="0.000543"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:27.377199" elapsed="0.000628"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:27.378377" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:27.377958" elapsed="0.000534"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:27.377925" elapsed="0.000616"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:33:27.373430" elapsed="0.005160"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:33:27.373019" elapsed="0.005624"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:33:27.363925" elapsed="0.014919">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:33:29.387013" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:33:29.387141" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:33:29.387404" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:33:29.381051" elapsed="0.007314">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:33:29.389022" elapsed="0.000050"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:29.390008" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:29.390501" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:29.390970" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:29.391444" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:29.391886" elapsed="0.000064"/>
</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-10-20T23:33:29.392392" elapsed="0.000042"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:29.393005" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:29.392586" elapsed="0.000528"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:29.392545" elapsed="0.000625"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:29.393702" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:29.393281" elapsed="0.000532"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:29.393249" elapsed="0.000613"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:29.394406" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:29.393989" elapsed="0.000528"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:29.393957" elapsed="0.000610"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:33:29.389592" elapsed="0.005022"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:33:29.389183" elapsed="0.005485"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:33:29.380123" elapsed="0.014747">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:33:31.403810" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:33:31.403933" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:33:31.404192" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:33:31.397648" elapsed="0.007526">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:33:31.405827" elapsed="0.000049"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:31.406784" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:31.407267" elapsed="0.000069"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:31.407741" elapsed="0.000041"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:31.408207" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:31.408675" elapsed="0.000042"/>
</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-10-20T23:33:31.409211" elapsed="0.000049"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:31.409882" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:31.409468" elapsed="0.000574"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:31.409424" elapsed="0.000677"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:31.410638" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:31.410213" elapsed="0.000538"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:31.410181" elapsed="0.000619"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:31.411424" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:31.410933" elapsed="0.000606"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:31.410896" elapsed="0.000692"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:33:31.406395" elapsed="0.005240"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:33:31.406003" elapsed="0.005687"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:33:31.396784" elapsed="0.015101">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:33:33.420049" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:33:33.420176" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:33:33.420450" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:33:33.414152" elapsed="0.007218">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:33:33.422096" elapsed="0.000051"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:33.423065" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:33.423555" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:33.424003" elapsed="0.000064"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:33.424501" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:33.424943" elapsed="0.000041"/>
</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-10-20T23:33:33.425454" elapsed="0.000043"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:33.426063" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:33.425647" elapsed="0.000532"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:33.425607" elapsed="0.000624"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:33.426765" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:33.426372" elapsed="0.000504"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:33.426337" elapsed="0.000588"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:33.427474" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:33.427057" elapsed="0.000529"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:33.427001" elapsed="0.000634"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:33:33.422654" elapsed="0.005029"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:33:33.422254" elapsed="0.005481"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:33:33.413230" elapsed="0.014705">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:33:35.435917" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:33:35.436041" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:33:35.436287" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:33:35.430198" elapsed="0.007495">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:33:35.438347" elapsed="0.000053"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:35.439293" elapsed="0.000076"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:35.439789" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:35.440253" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:35.440725" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:35.441187" elapsed="0.000042"/>
</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-10-20T23:33:35.441673" elapsed="0.000043"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:35.442285" elapsed="0.000071"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:35.441862" elapsed="0.000658"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:35.441822" elapsed="0.000755"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:35.443138" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:35.442727" elapsed="0.000524"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:35.442693" elapsed="0.000608"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:35.443829" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:35.443442" elapsed="0.000498"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:35.443409" elapsed="0.000581"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:33:35.438884" elapsed="0.005155"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:33:35.438508" elapsed="0.005610"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:33:35.429298" elapsed="0.015050">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:33:37.455242" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:33:37.455407" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:33:37.455626" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:33:37.446571" elapsed="0.009965">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:33:37.457148" elapsed="0.000051"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:37.458098" elapsed="0.000068"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:37.458616" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:37.459061" elapsed="0.000063"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:37.459557" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:37.460000" elapsed="0.000041"/>
</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-10-20T23:33:37.460504" elapsed="0.000044"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:37.461090" elapsed="0.000063"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:37.460695" elapsed="0.000526"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:37.460656" elapsed="0.000617"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:37.461805" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:37.461414" elapsed="0.000502"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:37.461380" elapsed="0.000583"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:37.462502" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:37.462069" elapsed="0.000547"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:37.462037" elapsed="0.000626"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:33:37.457712" elapsed="0.004998"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:33:37.457305" elapsed="0.005457"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:33:37.445670" elapsed="0.017288">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:33:39.472135" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:33:39.473360" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:33:39.473668" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:33:39.465554" elapsed="0.009162">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:33:39.475548" elapsed="0.000064"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:39.476644" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:39.477104" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:39.477594" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:39.478027" elapsed="0.000041"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:39.478511" elapsed="0.000042"/>
</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-10-20T23:33:39.479009" elapsed="0.000042"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:39.480225" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:39.479777" elapsed="0.000591"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:39.479189" elapsed="0.001240"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:39.480940" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:39.480545" elapsed="0.000509"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:39.480512" elapsed="0.000590"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:39.481646" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:39.481232" elapsed="0.000526"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:39.481198" elapsed="0.000609"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:33:39.476214" elapsed="0.005640"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:33:39.475742" elapsed="0.006168"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:33:39.464518" elapsed="0.017621">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:33:41.491304" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:33:41.491490" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:33:41.491757" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:33:41.484825" elapsed="0.008056">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:33:41.493630" elapsed="0.000051"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:41.494645" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:41.495096" elapsed="0.000041"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:41.495755" elapsed="0.000044"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:41.496195" elapsed="0.000061"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:41.496684" elapsed="0.000042"/>
</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-10-20T23:33:41.497138" elapsed="0.000041"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:41.497804" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:41.497396" elapsed="0.000517"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:41.497347" elapsed="0.000629"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:41.498522" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:41.498089" elapsed="0.000547"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:41.498057" elapsed="0.000627"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:41.499176" elapsed="0.000062"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:41.498790" elapsed="0.000544"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:41.498759" elapsed="0.000627"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:33:41.494198" elapsed="0.005236"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:33:41.493803" elapsed="0.005689"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:33:41.483781" elapsed="0.015941">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:33:43.509180" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:33:43.509389" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:33:43.509653" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:33:43.502629" elapsed="0.008092">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:33:43.511480" elapsed="0.000058"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:43.512533" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:43.512990" elapsed="0.000041"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:43.513474" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:43.513917" elapsed="0.000041"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:43.514398" elapsed="0.000042"/>
</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-10-20T23:33:43.514862" elapsed="0.000041"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:43.515510" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:43.515067" elapsed="0.000554"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:43.515022" elapsed="0.000662"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:43.516177" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:43.515796" elapsed="0.000507"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:43.515764" elapsed="0.000777"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:43.517047" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:43.516659" elapsed="0.000496"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:43.516626" elapsed="0.000577"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:33:43.512085" elapsed="0.005189"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:33:43.511663" elapsed="0.005695"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:33:43.501431" elapsed="0.016178">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:33:45.531401" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:33:45.531542" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:33:45.531806" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:33:45.520238" elapsed="0.012754">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:33:45.533705" elapsed="0.000053"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:45.534745" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:45.535203" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:45.535700" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:45.536145" elapsed="0.000041"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:45.536699" elapsed="0.000046"/>
</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-10-20T23:33:45.537172" elapsed="0.000042"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:45.537833" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:45.537430" elapsed="0.000514"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:45.537380" elapsed="0.000623"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:45.538562" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:45.538117" elapsed="0.000559"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:45.538085" elapsed="0.000640"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:45.539221" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:45.538833" elapsed="0.000551"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:45.538802" elapsed="0.000637"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:33:45.534274" elapsed="0.005213"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:33:45.533877" elapsed="0.005666"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:33:45.519212" elapsed="0.020550">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:33:47.549238" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:33:47.549455" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:33:47.549891" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:33:47.542566" elapsed="0.008394">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:33:47.551723" elapsed="0.000053"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:47.552756" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:47.553212" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:47.553707" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:47.554147" elapsed="0.000041"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:47.554637" elapsed="0.000043"/>
</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-10-20T23:33:47.555109" elapsed="0.000042"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:47.555771" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:47.555341" elapsed="0.000547"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:47.555268" elapsed="0.000682"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:47.556507" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:47.556062" elapsed="0.000563"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:47.556030" elapsed="0.000645"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:47.557184" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:47.556783" elapsed="0.000512"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:47.556751" elapsed="0.000649"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:33:47.552339" elapsed="0.005111"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:33:47.551903" elapsed="0.005603"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:33:47.541437" elapsed="0.016297">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:33:49.567146" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:33:49.567297" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:33:49.567635" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:33:49.560430" elapsed="0.008358">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:33:49.569564" elapsed="0.000053"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:49.570655" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:49.571124" elapsed="0.000043"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:49.571626" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:49.572103" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:49.572620" elapsed="0.000045"/>
</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-10-20T23:33:49.573247" elapsed="0.000045"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:49.574621" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:49.574084" elapsed="0.000662"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:49.573471" elapsed="0.001340"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:49.575363" elapsed="0.000072"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:49.574928" elapsed="0.000581"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:49.574894" elapsed="0.000667"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:49.576136" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:49.575705" elapsed="0.000551"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:49.575669" elapsed="0.000779"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:33:49.570153" elapsed="0.006368"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:33:49.569747" elapsed="0.006834"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:33:49.559344" elapsed="0.017468">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:33:51.585717" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:33:51.585861" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:33:51.586131" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:33:51.579386" elapsed="0.007915">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:33:51.588096" elapsed="0.000053"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:51.589223" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:51.589754" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:51.590211" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:51.590709" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:51.591156" elapsed="0.000043"/>
</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-10-20T23:33:51.591676" elapsed="0.000046"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:51.592304" elapsed="0.000073"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:51.591892" elapsed="0.000576"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:51.591843" elapsed="0.000697"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:51.593083" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:51.592656" elapsed="0.000545"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:51.592623" elapsed="0.000629"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:51.593831" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:51.593392" elapsed="0.000553"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:51.593357" elapsed="0.000643"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:33:51.588797" elapsed="0.005251"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:33:51.588277" elapsed="0.005828"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:33:51.578358" elapsed="0.016005">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Linear Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:33:53.602981" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:33:53.603105" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:33:53.603354" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:33:53.597079" elapsed="0.007154">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:33:53.604888" elapsed="0.000049"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:53.605862" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:1"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:53.606346" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"tp-id":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:53.606817" elapsed="0.000042"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"source-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:53.607258" elapsed="0.000041"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>"dest-tp":"openflow:${switch}:2"</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:53.607745" elapsed="0.000042"/>
</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-10-20T23:33:53.608201" elapsed="0.000041"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:53.608836" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:53.608418" elapsed="0.000527"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:53.608375" elapsed="0.000624"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:53.609543" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:53.609109" elapsed="0.000547"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:53.609077" elapsed="0.000627"/>
</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 the `container` does not contain the `item` one or more times.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:53.610199" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:33:53.609811" elapsed="0.000524"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:33:53.609780" elapsed="0.000607"/>
</if>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:33:53.605456" elapsed="0.004977"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:33:53.605044" elapsed="0.005442"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check Linear topology.</doc>
<status status="FAIL" start="2026-10-20T23:33:53.596196" elapsed="0.014511">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<msg time="2026-10-20T23:33:53.610890" level="FAIL">Keyword 'FlowLib.Check Linear Topology' failed after retrying for 5 minutes. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</msg>
<arg>300s</arg>
<arg>2s</arg>
<arg>FlowLib.Check Linear Topology</arg>
<arg>${SWITCHES}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-10-20T23:28:52.986113" elapsed="300.624971">Keyword 'FlowLib.Check Linear Topology' failed after retrying for 5 minutes. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<doc>Check Linear Topology.</doc>
<status status="FAIL" start="2026-10-20T23:28:52.985413" elapsed="300.626671">Keyword 'FlowLib.Check Linear Topology' failed after retrying for 5 minutes. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</test>
<test id="s1-s5-s1-t19" name="Check Flows In Operational DS After Controller Restarts" line="132">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:33:53.629119" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:33:53.629261" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:33:53.630431" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:33:53.622731" elapsed="0.008925">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:33:53.632418" elapsed="0.000057"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:53.632895" elapsed="0.000043"/>
</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="NOT RUN" start="2026-10-20T23:33:53.633387" elapsed="0.000044"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:33:53.618139" elapsed="0.015536">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:33:54.641961" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:33:54.642095" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:33:54.642374" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:33:54.635818" elapsed="0.007734">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:33:54.644207" elapsed="0.000049"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:54.644701" elapsed="0.000044"/>
</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="NOT RUN" start="2026-10-20T23:33:54.645164" elapsed="0.000041"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:33:54.634798" elapsed="0.010639">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:33:55.654135" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:33:55.654269" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:33:55.654584" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:33:55.647711" elapsed="0.007909">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:33:55.656273" elapsed="0.000078"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:55.656779" elapsed="0.000044"/>
</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="NOT RUN" start="2026-10-20T23:33:55.657243" elapsed="0.000041"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:33:55.646676" elapsed="0.010838">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:33:56.666158" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:33:56.666510" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:33:56.666788" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:33:56.659781" elapsed="0.008074">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:33:56.668537" elapsed="0.000068"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:56.668999" elapsed="0.000043"/>
</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="NOT RUN" start="2026-10-20T23:33:56.669488" elapsed="0.000043"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:33:56.658747" elapsed="0.011011">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:33:57.680128" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:33:57.680276" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:33:57.680628" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:33:57.672167" elapsed="0.009624">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:33:57.682507" elapsed="0.000050"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:57.682974" elapsed="0.000043"/>
</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="NOT RUN" start="2026-10-20T23:33:57.683460" elapsed="0.000043"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:33:57.671010" elapsed="0.012734">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:33:58.693148" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:33:58.693301" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:33:58.693654" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:33:58.686464" elapsed="0.008477">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:33:58.695943" elapsed="0.000069"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:58.696610" elapsed="0.000092"/>
</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="NOT RUN" start="2026-10-20T23:33:58.697342" elapsed="0.000238"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:33:58.685228" elapsed="0.012709">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:33:59.708536" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:33:59.708695" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:33:59.708939" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:33:59.700685" elapsed="0.009237">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:33:59.710716" elapsed="0.000080"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:33:59.711389" elapsed="0.000063"/>
</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="NOT RUN" start="2026-10-20T23:33:59.712029" elapsed="0.000060"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:33:59.699295" elapsed="0.013081">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:34:00.721626" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:34:00.721798" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:34:00.722076" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:34:00.714904" elapsed="0.008267">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:34:00.723930" elapsed="0.000055"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:00.724511" elapsed="0.000049"/>
</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="NOT RUN" start="2026-10-20T23:34:00.725112" elapsed="0.000048"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:34:00.713741" elapsed="0.011686">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:34:01.731897" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:34:01.731982" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:34:01.732142" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:34:01.727145" elapsed="0.005781">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:34:01.733325" elapsed="0.000023"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:01.734226" elapsed="0.000024"/>
</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="NOT RUN" start="2026-10-20T23:34:01.734464" elapsed="0.000020"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:34:01.726408" elapsed="0.008188">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:34:02.743764" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:34:02.743917" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:34:02.744202" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:34:02.736966" elapsed="0.008404">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:34:02.746107" elapsed="0.000050"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:02.746587" elapsed="0.000045"/>
</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="NOT RUN" start="2026-10-20T23:34:02.747083" elapsed="0.000043"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:34:02.735797" elapsed="0.011583">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:34:03.757212" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:34:03.757401" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:34:03.757687" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:34:03.749734" elapsed="0.009117">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:34:03.759579" elapsed="0.000050"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:03.760048" elapsed="0.000044"/>
</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="NOT RUN" start="2026-10-20T23:34:03.760542" elapsed="0.000044"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:34:03.748613" elapsed="0.012216">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:34:04.769841" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:34:04.769987" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:34:04.770442" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:34:04.763141" elapsed="0.008436">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:34:04.772294" elapsed="0.000075"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:04.772767" elapsed="0.000062"/>
</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="NOT RUN" start="2026-10-20T23:34:04.773248" elapsed="0.000040"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:34:04.762048" elapsed="0.011486">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:34:05.782993" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:34:05.783138" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:34:05.783451" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:34:05.775987" elapsed="0.008591">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:34:05.785340" elapsed="0.000067"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:05.785940" elapsed="0.000057"/>
</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="NOT RUN" start="2026-10-20T23:34:05.786515" elapsed="0.000046"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:34:05.774833" elapsed="0.011946">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:34:06.796160" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:34:06.796295" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:34:06.796598" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:34:06.789903" elapsed="0.007719">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:34:06.798277" elapsed="0.000077"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:06.798743" elapsed="0.000044"/>
</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="NOT RUN" start="2026-10-20T23:34:06.799239" elapsed="0.000044"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:34:06.788026" elapsed="0.011490">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:34:07.807788" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:34:07.808056" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:34:07.808292" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:34:07.801492" elapsed="0.007782">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:34:07.810015" elapsed="0.000058"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:07.810521" elapsed="0.000047"/>
</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="NOT RUN" start="2026-10-20T23:34:07.811014" elapsed="0.000044"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:34:07.800534" elapsed="0.010725">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:34:08.819764" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:34:08.819974" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:34:08.820286" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:34:08.813210" elapsed="0.008177">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:34:08.822022" elapsed="0.000051"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:08.822494" elapsed="0.000044"/>
</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="NOT RUN" start="2026-10-20T23:34:08.822984" elapsed="0.000043"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:34:08.812232" elapsed="0.010993">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:34:09.831718" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:34:09.831843" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:34:09.832089" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:34:09.825139" elapsed="0.007869">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:34:09.833629" elapsed="0.000050"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:09.834090" elapsed="0.000044"/>
</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="NOT RUN" start="2026-10-20T23:34:09.834574" elapsed="0.000133"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:34:09.824177" elapsed="0.010756">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:34:10.843817" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:34:10.843967" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:34:10.844209" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:34:10.836868" elapsed="0.008340">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:34:10.845877" elapsed="0.000075"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:10.846378" elapsed="0.000046"/>
</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="NOT RUN" start="2026-10-20T23:34:10.846842" elapsed="0.000043"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:34:10.835893" elapsed="0.011210">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:34:11.856660" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:34:11.856808" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:34:11.857082" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:34:11.849031" elapsed="0.009031">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:34:11.858705" elapsed="0.000051"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:11.859167" elapsed="0.000044"/>
</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="NOT RUN" start="2026-10-20T23:34:11.859655" elapsed="0.000045"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:34:11.848060" elapsed="0.011842">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:34:12.868684" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:34:12.868810" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:34:12.869059" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:34:12.861780" elapsed="0.008302">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:34:12.870710" elapsed="0.000050"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:12.871176" elapsed="0.000045"/>
</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="NOT RUN" start="2026-10-20T23:34:12.871673" elapsed="0.000044"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:34:12.860841" elapsed="0.011074">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:34:13.880339" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:34:13.880473" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:34:13.880691" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:34:13.873820" elapsed="0.007797">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:34:13.882234" elapsed="0.000050"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:13.882701" elapsed="0.000043"/>
</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="NOT RUN" start="2026-10-20T23:34:13.883181" elapsed="0.000042"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:34:13.872894" elapsed="0.010552">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:34:14.889428" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:34:14.889507" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:34:14.889645" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:34:14.884776" elapsed="0.005446">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:34:14.890624" elapsed="0.000028"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:14.890882" elapsed="0.000024"/>
</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="NOT RUN" start="2026-10-20T23:34:14.891612" elapsed="0.000027"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:34:14.884172" elapsed="0.007586">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:34:15.899592" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:34:15.899718" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:34:15.900114" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:34:15.893592" elapsed="0.007663">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:34:15.901982" elapsed="0.000063"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:15.902513" elapsed="0.000045"/>
</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="NOT RUN" start="2026-10-20T23:34:15.903004" elapsed="0.000063"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:34:15.892668" elapsed="0.010614">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:34:16.908213" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:34:16.908275" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:34:16.908406" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:34:16.904433" elapsed="0.004411">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:34:16.909147" elapsed="0.000023"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:16.909359" elapsed="0.000020"/>
</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="NOT RUN" start="2026-10-20T23:34:16.909573" elapsed="0.000018"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:34:16.903921" elapsed="0.005777">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:34:17.917543" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:34:17.917670" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:34:17.917895" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:34:17.911547" elapsed="0.007270">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:34:17.919471" elapsed="0.000051"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:17.919908" elapsed="0.000044"/>
</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="NOT RUN" start="2026-10-20T23:34:17.920413" elapsed="0.000044"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:34:17.910617" elapsed="0.010034">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:34:18.928174" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:34:18.928447" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:34:18.928679" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:34:18.922517" elapsed="0.007082">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:34:18.930212" elapsed="0.000051"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:18.930677" elapsed="0.000043"/>
</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="NOT RUN" start="2026-10-20T23:34:18.931150" elapsed="0.000043"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:34:18.921618" elapsed="0.009799">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:34:19.939833" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:34:19.939959" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:34:19.940220" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:34:19.933897" elapsed="0.007217">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:34:19.941814" elapsed="0.000051"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:19.942277" elapsed="0.000071"/>
</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="NOT RUN" start="2026-10-20T23:34:19.942768" elapsed="0.000043"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:34:19.932390" elapsed="0.010614">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:34:20.951038" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:34:20.951165" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:34:20.951466" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:34:20.944945" elapsed="0.007479">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:34:20.953053" elapsed="0.000053"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:20.953563" elapsed="0.000045"/>
</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="NOT RUN" start="2026-10-20T23:34:20.954054" elapsed="0.000167"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:34:20.943981" elapsed="0.010488">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:34:21.962455" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:34:21.962583" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:34:21.962806" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:34:21.956392" elapsed="0.007382">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:34:21.964456" elapsed="0.000053"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:21.964899" elapsed="0.000045"/>
</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="NOT RUN" start="2026-10-20T23:34:21.965441" elapsed="0.000047"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:34:21.955437" elapsed="0.010256">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:34:22.973705" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:34:22.973837" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:34:22.974064" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:34:22.967724" elapsed="0.007358">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:34:22.975804" elapsed="0.000054"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:22.976285" elapsed="0.000103"/>
</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="NOT RUN" start="2026-10-20T23:34:22.976837" elapsed="0.000045"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:34:22.966702" elapsed="0.010379">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Number Of Flows" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:34:23.985676" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:34:23.985802" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:34:23.986039" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:34:23.979132" elapsed="0.007909">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:34:23.987693" elapsed="0.000050"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"priority"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:23.988157" elapsed="0.000045"/>
</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="NOT RUN" start="2026-10-20T23:34:23.988671" elapsed="0.000044"/>
</kw>
<arg>${less_flows}</arg>
<doc>Check number of flows in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:34:23.978193" elapsed="0.010720">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<msg time="2026-10-20T23:34:23.989091" level="FAIL">Keyword 'FlowLib.Check Number Of Flows' failed after retrying for 30 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</msg>
<arg>30s</arg>
<arg>1s</arg>
<arg>FlowLib.Check Number Of Flows</arg>
<arg>${less_flows}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-10-20T23:33:53.616355" elapsed="30.372948">Keyword 'FlowLib.Check Number Of Flows' failed after retrying for 30 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<doc>Check Flows after mininet starts.</doc>
<status status="FAIL" start="2026-10-20T23:33:53.614608" elapsed="30.375046">Keyword 'FlowLib.Check Number Of Flows' failed after retrying for 30 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</test>
<test id="s1-s5-s1-t20" name="Check Groups In Operational DS After Controller Restarts" line="136">
<kw name="Check Number Of Groups" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:34:23.996920" level="INFO">GET Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:34:23.997029" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '402'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/opendaylight-inventory:nodes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:34:23.997222" level="FAIL">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:34:23.992121" elapsed="0.005935">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:34:23.998643" elapsed="0.000048"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${group_count}</var>
<arg>${resp.text}</arg>
<arg>"group-type"</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:23.999067" elapsed="0.000041"/>
</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="NOT RUN" start="2026-10-20T23:34:23.999563" elapsed="0.000043"/>
</kw>
<arg>${less_groups}</arg>
<doc>Check number of groups in the inventory.</doc>
<status status="FAIL" start="2026-10-20T23:34:23.991414" elapsed="0.008377">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</kw>
<doc>Check Flows after mininet starts.</doc>
<status status="FAIL" start="2026-10-20T23:34:23.990153" elapsed="0.009903">Url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig Expected status: 404 != 200</status>
</test>
<test id="s1-s5-s1-t21" name="Check Flows In Switch After Controller Restarts" line="140">
<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-10-20T23:34:24.003523" elapsed="0.000265"/>
</kw>
<status status="PASS" start="2026-10-20T23:34:24.002983" elapsed="0.000881"/>
</branch>
<status status="PASS" start="2026-10-20T23:34:24.002934" elapsed="0.000988"/>
</if>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:34:24.004992" 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 variable.</doc>
<status status="PASS" start="2026-10-20T23:34:24.004375" elapsed="0.000674"/>
</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-10-20T23:34:24.006785" elapsed="0.000237"/>
</kw>
<status status="PASS" start="2026-10-20T23:34:24.006302" elapsed="0.000793"/>
</branch>
<status status="PASS" start="2026-10-20T23:34:24.006243" elapsed="0.000904"/>
</if>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-20T23:34:24.018644" 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-10-20T23:34:24.007513" elapsed="0.011436"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-10-20T23:34:24.122534" level="INFO">*** s1 ------------------------------------------------------------------------
OFPST_AGGREGATE reply (OF1.3) (xid=0x2): packet_count=208 byte_count=17157 flow_count=4
*** s2 ------------------------------------------------------------------------
OFPST_AGGREGATE reply (OF1.3) (xid=0x2): packet_count=373 byte_count=31178 flow_count=5
*** s3 ------------------------------------------------------------------------
OFPST_AGGREGATE reply (OF1.3) (xid=0x2): packet_count=207 byte_count=17071 flow_count=4
mininet&gt;</msg>
<msg time="2026-10-20T23:34:24.122858" level="INFO">${output} = *** s1 ------------------------------------------------------------------------
OFPST_AGGREGATE reply (OF1.3) (xid=0x2): packet_count=208 byte_count=17157 flow_count=4
*** 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-10-20T23:34:24.019610" elapsed="0.103275"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-10-20T23:34:24.122962" elapsed="0.000087"/>
</return>
<msg time="2026-10-20T23:34:24.123342" level="INFO">${output} = *** s1 ------------------------------------------------------------------------
OFPST_AGGREGATE reply (OF1.3) (xid=0x2): packet_count=208 byte_count=17157 flow_count=4
*** s2 ----------------------...</msg>
<var>${output}</var>
<arg>${mininet_conn}</arg>
<arg>${cmd}</arg>
<doc>Sends Command dpctl dump-aggregate -O OpenFlow13 to Mininet session 5 and returns read buffer response.</doc>
<status status="PASS" start="2026-10-20T23:34:24.005701" elapsed="0.117672"/>
</kw>
<kw name="Get Regexp Matches" owner="String">
<msg time="2026-10-20T23:34:24.123956" level="INFO">${flows} = ['4', '5', '4']</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-10-20T23:34:24.123602" elapsed="0.000380"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:34:24.124825" level="INFO">${total_flows} = 13</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-10-20T23:34:24.124173" elapsed="0.000677"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<msg time="2026-10-20T23:34:24.125619" level="FAIL">13.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-10-20T23:34:24.125187" elapsed="0.000534">13.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-10-20T23:34:24.002197" elapsed="0.123656">13.0 != 300.0</status>
</kw>
<doc>Check Flows after mininet starts.</doc>
<status status="FAIL" start="2026-10-20T23:34:24.000691" elapsed="0.125357">13.0 != 300.0</status>
</test>
<test id="s1-s5-s1-t22" name="Stop Mininet" line="144">
<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-10-20T23:34:24.130290" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:34:24.130041" elapsed="0.000324"/>
</branch>
<status status="PASS" start="2026-10-20T23:34:24.130015" elapsed="0.000379"/>
</if>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-20T23:34:24.131964" 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-10-20T23:34:24.130544" elapsed="0.001475"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-10-20T23:34:24.395673" level="INFO">*** Stopping 1 controllers
c0 
*** Stopping 5 links
.....
*** Stopping 3 switches
s1 s2 s3 
*** Stopping 3 hosts
h1 h2 h3 
*** Done
completed in 863.562 seconds
[?2004h[jenkins@releng-34016-79-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-10-20T23:34:24.132190" elapsed="0.263615"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:34:24.396191" elapsed="0.000340"/>
</kw>
<doc>Stops Mininet and exits session ${mininet_conn}</doc>
<status status="PASS" start="2026-10-20T23:34:24.129733" elapsed="0.266864"/>
</kw>
<doc>Stop Mininet.</doc>
<status status="PASS" start="2026-10-20T23:34:24.126589" elapsed="0.270160"/>
</test>
<test id="s1-s5-s1-t23" name="Check No Switches" line="148">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check No Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:34:24.402535" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:34:24.402598" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:34:24.402764" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:34:24.398658" elapsed="0.004729">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:34:24.403716" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if the `container` contains the `item`.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:24.404090" elapsed="0.000021"/>
</kw>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:34:24.403899" elapsed="0.000244"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:34:24.403807" elapsed="0.000368"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-10-20T23:34:24.398294" elapsed="0.006058">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check No Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:34:25.413635" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:34:25.413931" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:34:25.414240" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:34:25.406634" elapsed="0.008742">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:34:25.416055" elapsed="0.000049"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if the `container` contains the `item`.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:25.416894" elapsed="0.000053"/>
</kw>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:34:25.416443" elapsed="0.000580"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:34:25.416226" elapsed="0.000861"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-10-20T23:34:25.405489" elapsed="0.011878">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check No Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:34:26.425843" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:34:26.425971" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:34:26.426206" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:34:26.419287" elapsed="0.007941">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:34:26.427963" elapsed="0.000053"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if the `container` contains the `item`.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:26.428741" elapsed="0.000050"/>
</kw>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:34:26.428266" elapsed="0.000600"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:34:26.428131" elapsed="0.000795"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-10-20T23:34:26.418370" elapsed="0.010773">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check No Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:34:27.438067" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:34:27.438198" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:34:27.438513" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:34:27.431100" elapsed="0.008467">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:34:27.440198" elapsed="0.000049"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if the `container` contains the `item`.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:27.440928" elapsed="0.000049"/>
</kw>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:34:27.440543" elapsed="0.000616"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:34:27.440412" elapsed="0.000811"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-10-20T23:34:27.430144" elapsed="0.011333">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check No Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:34:28.449981" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:34:28.450117" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:34:28.450412" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:34:28.443677" elapsed="0.007736">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:34:28.452045" elapsed="0.000049"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if the `container` contains the `item`.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:28.452778" elapsed="0.000046"/>
</kw>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:34:28.452388" elapsed="0.000512"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:34:28.452207" elapsed="0.000751"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-10-20T23:34:28.442605" elapsed="0.010561">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check No Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:34:29.461780" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:34:29.461971" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:34:29.462216" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:34:29.455380" elapsed="0.007846">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:34:29.463924" elapsed="0.000049"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>openflow:${switch}</arg>
<doc>Fails if the `container` contains the `item`.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:29.464657" elapsed="0.000048"/>
</kw>
<var name="${switch}"/>
<status status="NOT RUN" start="2026-10-20T23:34:29.464224" elapsed="0.000553"/>
</iter>
<var>${switch}</var>
<value>1</value>
<value>${switches+1}</value>
<status status="NOT RUN" start="2026-10-20T23:34:29.464091" elapsed="0.000744"/>
</for>
<arg>${SWITCHES}</arg>
<doc>Check no switch is in topology</doc>
<status status="FAIL" start="2026-10-20T23:34:29.454366" elapsed="0.010676">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<msg time="2026-10-20T23:34:29.465245" level="FAIL">Keyword 'FlowLib.Check No Switches In Topology' failed after retrying for 5 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</msg>
<arg>5s</arg>
<arg>1s</arg>
<arg>FlowLib.Check No Switches In Topology</arg>
<arg>${SWITCHES}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-10-20T23:34:24.397518" elapsed="5.067979">Keyword 'FlowLib.Check No Switches In Topology' failed after retrying for 5 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<doc>Check no switches in topology.</doc>
<status status="FAIL" start="2026-10-20T23:34:24.396989" elapsed="5.068849">Keyword 'FlowLib.Check No Switches In Topology' failed after retrying for 5 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</test>
<kw name="Final Phase" type="TEARDOWN">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:34:29.469509" 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 variable.</doc>
<status status="PASS" start="2026-10-20T23:34:29.468495" elapsed="0.001074"/>
</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 or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:29.473875" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:34:29.473217" elapsed="0.000777"/>
</branch>
<status status="PASS" start="2026-10-20T23:34:29.473172" elapsed="0.000878"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:34:29.478165" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-10-20T23:34:29.474529" elapsed="0.003980"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:34:29.479661" level="INFO">Attempting to execute command "sudo iptables -v -F" on remote system "10.30.170.223" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:34:29.478940" elapsed="0.000823"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:34:29.480901" 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-10-20T23:34:29.480167" elapsed="0.000790"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-20T23:34:29.482950" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:34:29.483108" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-20T23:34:29.482299" 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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:34:29.483544" elapsed="0.000650"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:34:29.485989" level="INFO">Logging into '10.30.170.223:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:34:30.128883" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-194-generic x86_64)

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

 System information as of Tue Oct 20 23:34:29 UTC 2026

  System load:  0.0                Processes:             120
  Usage of /:   14.0% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.170.223
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Tue Oct 20 23:28:52 2026 from 10.30.170.114
[?2004h[jenkins@releng-34016-79-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-10-20T23:34:29.485468" elapsed="0.643562"/>
</kw>
<msg time="2026-10-20T23:34:30.129112" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:34:29.484610" elapsed="0.644601"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-10-20T23:34:29.481450" elapsed="0.647893"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:34:30.129881" level="INFO">Executing command 'sudo iptables -v -F'.</msg>
<msg time="2026-10-20T23:34:30.163389" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:34:30.163577" 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-10-20T23:34:30.163638" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:34:30.129647" elapsed="0.034022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:34:30.163897" elapsed="0.000355"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:34:30.165497" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:34:30.164867" elapsed="0.000721"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:34:30.166023" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:34:30.165761" elapsed="0.000371"/>
</branch>
<status status="PASS" start="2026-10-20T23:34:30.165709" elapsed="0.000473"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-10-20T23:34:30.166692" elapsed="0.000058"/>
</return>
<status status="PASS" start="2026-10-20T23:34:30.166293" elapsed="0.000532"/>
</branch>
<status status="PASS" start="2026-10-20T23:34:30.166260" elapsed="0.000617"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:34:30.166948" 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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:34:30.168531" elapsed="0.000640"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-20T23:34:30.169638" elapsed="0.000454"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:34:30.170476" elapsed="0.000205"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-10-20T23:34:30.167672" elapsed="0.003117"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-10-20T23:34:29.472359" elapsed="0.698588"/>
</kw>
<msg time="2026-10-20T23:34:30.171057" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:34:29.471080" elapsed="0.700102"/>
</kw>
<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-10-20T23:34:29.470121" elapsed="0.701254"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:34:30.179392" level="INFO">DELETE Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes 
 path_url=/rests/data/opendaylight-inventory:nodes 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:34:30.179513" level="INFO">DELETE Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes 
 status=404, reason=Not Found 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-10-20T23:34:30.179772" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes</msg>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:34:30.172669" elapsed="0.008622">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes</status>
</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 errorw.</doc>
<status status="PASS" start="2026-10-20T23:34:30.171746" elapsed="0.009753"/>
</kw>
<kw name="Delete All Sessions" owner="RequestsLibrary">
<msg time="2026-10-20T23:34:30.182049" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects </doc>
<status status="PASS" start="2026-10-20T23:34:30.181874" elapsed="0.000971"/>
</kw>
<doc>Delete all sessions.</doc>
<status status="PASS" start="2026-10-20T23:34:29.467917" elapsed="0.715063"/>
</kw>
<doc>Test reconciliation of chained groups and flows after switch connection and controller are restarted.</doc>
<status status="FAIL" start="2026-10-20T23:19:57.155605" elapsed="873.027451"/>
</suite>
<status status="FAIL" start="2026-10-20T23:19:57.153068" elapsed="873.032228"/>
</suite>
<suite id="s1-s6" name="2429" source="/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Bug_Validation/2429.robot">
<test id="s1-s6-t1" name="Bug_2429" line="22">
<kw name="Log Environment Details">
<kw name="Get Process ID Based On Regex On Remote System" owner="Utils">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:34:30.214400" level="INFO">${cmd} = ps -elf | grep -v grep | grep java.*karaf | awk '{print $4}'</msg>
<var>${cmd}</var>
<arg>ps -elf | grep -v grep | grep ${regex_string_to_match_on} | awk '{print $4}'</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:34:30.213936" elapsed="0.000544"/>
</kw>
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:30.216004" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:34:30.215660" elapsed="0.000416"/>
</branch>
<status status="PASS" start="2026-10-20T23:34:30.215623" elapsed="0.000491"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:34:30.216644" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-10-20T23:34:30.216384" elapsed="0.000424"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:34:30.217492" level="INFO">Attempting to execute command "ps -elf | grep -v grep | grep java.*karaf | awk '{print $4}'" on remote system "10.30.170.223" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:34:30.217040" elapsed="0.000515"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:34:30.218197" 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-10-20T23:34:30.217766" elapsed="0.000464"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-20T23:34:30.219366" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:34:30.219480" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-20T23:34:30.218965" elapsed="0.000547"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:34:30.219693" elapsed="0.000431"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:34:30.221199" level="INFO">Logging into '10.30.170.223:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:34:30.592734" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-194-generic x86_64)

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

 System information as of Tue Oct 20 23:34:29 UTC 2026

  System load:  0.0                Processes:             120
  Usage of /:   14.0% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.170.223
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Tue Oct 20 23:34:30 2026 from 10.30.170.114
[?2004h[jenkins@releng-34016-79-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-10-20T23:34:30.220876" elapsed="0.372026"/>
</kw>
<msg time="2026-10-20T23:34:30.592995" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:34:30.220363" elapsed="0.372740"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-10-20T23:34:30.218504" elapsed="0.374735"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:34:30.593885" level="INFO">Executing command 'ps -elf | grep -v grep | grep java.*karaf | awk '{print $4}''.</msg>
<msg time="2026-10-20T23:34:30.616841" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:34:30.617013" level="INFO">${stdout} = 4384</msg>
<msg time="2026-10-20T23:34:30.617075" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:34:30.593592" elapsed="0.023514"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:34:30.617301" elapsed="0.000387"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:34:30.618438" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:34:30.617986" elapsed="0.000507"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:34:30.618823" elapsed="0.000027"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:34:30.618620" elapsed="0.000281"/>
</branch>
<status status="PASS" start="2026-10-20T23:34:30.618577" elapsed="0.000359"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-10-20T23:34:30.619127" elapsed="0.000036"/>
</return>
<status status="PASS" start="2026-10-20T23:34:30.619009" elapsed="0.000208"/>
</branch>
<status status="PASS" start="2026-10-20T23:34:30.618989" elapsed="0.000268"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:34:30.619335" 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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:34:30.620401" elapsed="0.000436"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-20T23:34:30.621061" elapsed="0.000265"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:34:30.621507" 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-10-20T23:34:30.619790" elapsed="0.001912"/>
</kw>
<msg time="2026-10-20T23:34:30.621837" level="INFO">${output} = 4384</msg>
<var>${output}</var>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>prompt=${prompt}</arg>
<arg>prompt_timeout=${prompt_timeout}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-10-20T23:34:30.214931" elapsed="0.406939"/>
</kw>
<kw name="Fetch From Left" owner="String">
<msg time="2026-10-20T23:34:30.622382" level="INFO">${pid} = 4384</msg>
<var>${pid}</var>
<arg>${output}</arg>
<arg>\r</arg>
<doc>Returns contents of the `string` before the first occurrence of `marker`.</doc>
<status status="PASS" start="2026-10-20T23:34:30.622081" elapsed="0.000351"/>
</kw>
<return>
<value>${pid}</value>
<status status="PASS" start="2026-10-20T23:34:30.622500" elapsed="0.000041"/>
</return>
<msg time="2026-10-20T23:34:30.622689" level="INFO">${output} = 4384</msg>
<var>${output}</var>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>java.*karaf</arg>
<arg>${ODL_SYSTEM_USER}</arg>
<doc>Uses ps to find a process that matches the supplied regex. Returns the PID of that process
The ${regex_string_to_match_on} should produce a unique process otherwise the PID returned may not be
the expected PID</doc>
<status status="PASS" start="2026-10-20T23:34:30.213228" elapsed="0.409494"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:34:30.623335" level="INFO">4384</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:34:30.622991" elapsed="0.000404"/>
</kw>
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:30.624779" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:34:30.624479" elapsed="0.000373"/>
</branch>
<status status="PASS" start="2026-10-20T23:34:30.624451" elapsed="0.000434"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:34:30.625347" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-10-20T23:34:30.625121" elapsed="0.000523"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:34:30.626289" level="INFO">Attempting to execute command "netstat -na | grep 6633" on remote system "10.30.170.223" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:34:30.625877" elapsed="0.000495"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:34:30.627031" level="INFO">${conn_id} = 23</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-20T23:34:30.626599" elapsed="0.000466"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-20T23:34:30.628230" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:34:30.628349" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-20T23:34:30.627846" 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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:34:30.628571" elapsed="0.000401"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:34:30.630022" level="INFO">Logging into '10.30.170.223:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:34:30.991805" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-194-generic x86_64)

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

 System information as of Tue Oct 20 23:34:29 UTC 2026

  System load:  0.0                Processes:             120
  Usage of /:   14.0% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.170.223
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Tue Oct 20 23:34:30 2026 from 10.30.170.114
[?2004h[jenkins@releng-34016-79-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-10-20T23:34:30.629698" elapsed="0.362237"/>
</kw>
<msg time="2026-10-20T23:34:30.992011" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:34:30.629171" elapsed="0.362920"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-10-20T23:34:30.627366" elapsed="0.364836"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:34:30.992704" level="INFO">Executing command 'netstat -na | grep 6633'.</msg>
<msg time="2026-10-20T23:34:31.005888" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-10-20T23:34:31.006125" level="INFO">${stdout} = </msg>
<msg time="2026-10-20T23:34:31.006198" 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-10-20T23:34:30.992484" elapsed="0.013744"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:34:31.006464" elapsed="0.000322"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:34:31.007460" 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-10-20T23:34:31.007053" elapsed="0.000470"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:34:31.007803" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:34:31.007635" elapsed="0.000235"/>
</branch>
<status status="PASS" start="2026-10-20T23:34:31.007601" elapsed="0.000301"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-10-20T23:34:31.008092" elapsed="0.000034"/>
</return>
<status status="PASS" start="2026-10-20T23:34:31.007973" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-10-20T23:34:31.007952" elapsed="0.000252"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:34:31.008248" elapsed="0.000018"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:34:31.009251" 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-10-20T23:34:31.009942" elapsed="0.000203"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:34:31.010302" elapsed="0.000161"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-10-20T23:34:31.008692" elapsed="0.001841"/>
</kw>
<msg time="2026-10-20T23:34:31.010673" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>netstat -na | grep 6633</arg>
<arg>${ODL_SYSTEM_USER}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-10-20T23:34:30.623865" elapsed="0.386840"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:34:31.011270" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:34:31.010962" elapsed="0.000383"/>
</kw>
<doc>Will display relevant details of the test environement to help aid debugging efforts if
needed in the future.</doc>
<status status="PASS" start="2026-10-20T23:34:30.211146" elapsed="0.800388"/>
</kw>
<kw name="Get Process ID Based On Regex On Remote System" owner="Utils">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:34:31.014296" level="INFO">${cmd} = ps -elf | grep -v grep | grep java.*karaf | awk '{print $4}'</msg>
<var>${cmd}</var>
<arg>ps -elf | grep -v grep | grep ${regex_string_to_match_on} | awk '{print $4}'</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:34:31.013915" elapsed="0.000449"/>
</kw>
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:31.015819" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:34:31.015520" elapsed="0.000371"/>
</branch>
<status status="PASS" start="2026-10-20T23:34:31.015495" elapsed="0.000429"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:34:31.016381" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-10-20T23:34:31.016174" elapsed="0.000390"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:34:31.017198" level="INFO">Attempting to execute command "ps -elf | grep -v grep | grep java.*karaf | awk '{print $4}'" on remote system "10.30.170.223" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:34:31.016794" elapsed="0.000465"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:34:31.017923" 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-10-20T23:34:31.017508" elapsed="0.000450"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-20T23:34:31.019101" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:34:31.019197" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-20T23:34:31.018728" elapsed="0.000500"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:34:31.019421" elapsed="0.000418"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:34:31.020892" level="INFO">Logging into '10.30.170.223:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:34:31.442967" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-194-generic x86_64)

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

 System information as of Tue Oct 20 23:34:29 UTC 2026

  System load:  0.0                Processes:             120
  Usage of /:   14.0% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.170.223
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Tue Oct 20 23:34:30 2026 from 10.30.170.114
[?2004h[jenkins@releng-34016-79-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-10-20T23:34:31.020570" elapsed="0.422502"/>
</kw>
<msg time="2026-10-20T23:34:31.443140" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:34:31.020032" elapsed="0.423179"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-10-20T23:34:31.018195" elapsed="0.425128"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:34:31.443724" level="INFO">Executing command 'ps -elf | grep -v grep | grep java.*karaf | awk '{print $4}''.</msg>
<msg time="2026-10-20T23:34:31.466949" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:34:31.467093" level="INFO">${stdout} = 4384</msg>
<msg time="2026-10-20T23:34:31.467149" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:34:31.443545" elapsed="0.023634"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:34:31.467399" elapsed="0.000334"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:34:31.468343" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:34:31.467985" elapsed="0.000414"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:34:31.468660" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:34:31.468515" elapsed="0.000213"/>
</branch>
<status status="PASS" start="2026-10-20T23:34:31.468484" elapsed="0.000274"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-10-20T23:34:31.468941" elapsed="0.000035"/>
</return>
<status status="PASS" start="2026-10-20T23:34:31.468826" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-10-20T23:34:31.468806" elapsed="0.000245"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:34:31.469096" elapsed="0.000018"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:34:31.470129" elapsed="0.000436"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-20T23:34:31.470794" elapsed="0.000194"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:34:31.471153" 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-10-20T23:34:31.469597" elapsed="0.001803"/>
</kw>
<msg time="2026-10-20T23:34:31.471589" level="INFO">${output} = 4384</msg>
<var>${output}</var>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>prompt=${prompt}</arg>
<arg>prompt_timeout=${prompt_timeout}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-10-20T23:34:31.014817" elapsed="0.456813"/>
</kw>
<kw name="Fetch From Left" owner="String">
<msg time="2026-10-20T23:34:31.472173" level="INFO">${pid} = 4384</msg>
<var>${pid}</var>
<arg>${output}</arg>
<arg>\r</arg>
<doc>Returns contents of the `string` before the first occurrence of `marker`.</doc>
<status status="PASS" start="2026-10-20T23:34:31.471889" elapsed="0.000319"/>
</kw>
<return>
<value>${pid}</value>
<status status="PASS" start="2026-10-20T23:34:31.472269" elapsed="0.000068"/>
</return>
<msg time="2026-10-20T23:34:31.472514" level="INFO">${controller_pid} = 4384</msg>
<var>${controller_pid}</var>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>java.*karaf</arg>
<arg>${ODL_SYSTEM_USER}</arg>
<doc>Uses ps to find a process that matches the supplied regex. Returns the PID of that process
The ${regex_string_to_match_on} should produce a unique process otherwise the PID returned may not be
the expected PID</doc>
<status status="PASS" start="2026-10-20T23:34:31.013258" elapsed="0.459291"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${controller_pid}</arg>
<arg>[0-9]+</arg>
<arg>PID was not discovered</arg>
<doc>Fails if the `string` does not match the regular expression `pattern`.</doc>
<status status="PASS" start="2026-10-20T23:34:31.472800" elapsed="0.000419"/>
</kw>
<kw name="Get Process Thread Count On Remote System" owner="Utils">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:34:31.474534" level="INFO">${cmd} = ps --no-headers -o nlwp 4384</msg>
<var>${cmd}</var>
<arg>ps --no-headers -o nlwp ${pid}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:34:31.474124" elapsed="0.000444"/>
</kw>
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:31.475987" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:34:31.475692" elapsed="0.000367"/>
</branch>
<status status="PASS" start="2026-10-20T23:34:31.475664" elapsed="0.000427"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:34:31.476616" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-10-20T23:34:31.476382" elapsed="0.000425"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:34:31.477488" level="INFO">Attempting to execute command "ps --no-headers -o nlwp 4384" on remote system "10.30.170.223" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:34:31.477041" elapsed="0.000509"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:34:31.478168" 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-10-20T23:34:31.477760" elapsed="0.000442"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-20T23:34:31.479288" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:34:31.479407" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-20T23:34:31.478936" elapsed="0.000517"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:34:31.479627" elapsed="0.000409"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:34:31.481073" level="INFO">Logging into '10.30.170.223:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:34:31.852355" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-194-generic x86_64)

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

 System information as of Tue Oct 20 23:34:29 UTC 2026

  System load:  0.0                Processes:             120
  Usage of /:   14.0% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.170.223
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Tue Oct 20 23:34:31 2026 from 10.30.170.114
[?2004h[jenkins@releng-34016-79-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-10-20T23:34:31.480757" elapsed="0.371728"/>
</kw>
<msg time="2026-10-20T23:34:31.852625" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:34:31.480232" elapsed="0.372464"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-10-20T23:34:31.478473" elapsed="0.374321"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:34:31.853192" level="INFO">Executing command 'ps --no-headers -o nlwp 4384'.</msg>
<msg time="2026-10-20T23:34:31.866156" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:34:31.866293" level="INFO">${stdout} =  167</msg>
<msg time="2026-10-20T23:34:31.866370" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:34:31.853008" elapsed="0.013393"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:34:31.866607" elapsed="0.000314"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:34:31.867604" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:34:31.867175" elapsed="0.000483"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:34:31.867941" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:34:31.867758" elapsed="0.000270"/>
</branch>
<status status="PASS" start="2026-10-20T23:34:31.867728" elapsed="0.000338"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-10-20T23:34:31.868279" elapsed="0.000067"/>
</return>
<status status="PASS" start="2026-10-20T23:34:31.868157" elapsed="0.000237"/>
</branch>
<status status="PASS" start="2026-10-20T23:34:31.868128" elapsed="0.000299"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:34:31.868491" 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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:34:31.869427" 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-10-20T23:34:31.870075" elapsed="0.000202"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:34:31.870476" 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-10-20T23:34:31.868875" elapsed="0.001796"/>
</kw>
<msg time="2026-10-20T23:34:31.870806" level="INFO">${output} =  167</msg>
<var>${output}</var>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>prompt=${prompt}</arg>
<arg>prompt_timeout=${prompt_timeout}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-10-20T23:34:31.474983" elapsed="0.395854"/>
</kw>
<kw name="Fetch From Left" owner="String">
<msg time="2026-10-20T23:34:31.871285" level="INFO">${thread_count} =  167</msg>
<var>${thread_count}</var>
<arg>${output}</arg>
<arg>\r</arg>
<doc>Returns contents of the `string` before the first occurrence of `marker`.</doc>
<status status="PASS" start="2026-10-20T23:34:31.871043" elapsed="0.000296"/>
</kw>
<return>
<value>${thread_count}</value>
<status status="PASS" start="2026-10-20T23:34:31.871399" elapsed="0.000040"/>
</return>
<msg time="2026-10-20T23:34:31.871598" level="INFO">${starting_thread_count} =  167</msg>
<var>${starting_thread_count}</var>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${controller_pid}</arg>
<arg>${ODL_SYSTEM_USER}</arg>
<doc>Executes the ps command to retrieve the lightweight process (aka thread) count.</doc>
<status status="PASS" start="2026-10-20T23:34:31.473502" elapsed="0.398129"/>
</kw>
<kw name="Repeat Keyword" owner="BuiltIn">
<msg time="2026-10-20T23:34:31.872289" level="INFO">Repeating keyword, round 1/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:31.873041" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:31.872541" elapsed="0.002807"/>
</kw>
<msg time="2026-10-20T23:34:31.875422" level="INFO">Repeating keyword, round 2/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:31.876072" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:31.875654" elapsed="0.002790"/>
</kw>
<msg time="2026-10-20T23:34:31.878541" level="INFO">Repeating keyword, round 3/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:31.879174" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:31.878760" elapsed="0.001277"/>
</kw>
<msg time="2026-10-20T23:34:31.880112" level="INFO">Repeating keyword, round 4/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:31.880795" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:31.880359" elapsed="0.002525"/>
</kw>
<msg time="2026-10-20T23:34:31.883158" level="INFO">Repeating keyword, round 5/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:31.885088" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:31.883888" elapsed="0.002245"/>
</kw>
<msg time="2026-10-20T23:34:31.886253" level="INFO">Repeating keyword, round 6/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:31.887385" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:31.886690" elapsed="0.001863"/>
</kw>
<msg time="2026-10-20T23:34:31.888808" level="INFO">Repeating keyword, round 7/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:31.889916" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:31.889158" elapsed="0.002396"/>
</kw>
<msg time="2026-10-20T23:34:31.891680" level="INFO">Repeating keyword, round 8/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:31.894428" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:31.892029" elapsed="0.003270"/>
</kw>
<msg time="2026-10-20T23:34:31.895559" level="INFO">Repeating keyword, round 9/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:31.896756" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:31.895925" elapsed="0.001677"/>
</kw>
<msg time="2026-10-20T23:34:31.897717" level="INFO">Repeating keyword, round 10/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:31.899708" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:31.898102" elapsed="0.004463"/>
</kw>
<msg time="2026-10-20T23:34:31.902691" level="INFO">Repeating keyword, round 11/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:31.903802" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:31.903067" elapsed="0.004470"/>
</kw>
<msg time="2026-10-20T23:34:31.907664" level="INFO">Repeating keyword, round 12/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:31.908987" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:31.908186" elapsed="0.001858"/>
</kw>
<msg time="2026-10-20T23:34:31.910166" level="INFO">Repeating keyword, round 13/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:31.911476" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:31.910670" elapsed="0.003920"/>
</kw>
<msg time="2026-10-20T23:34:31.914714" level="INFO">Repeating keyword, round 14/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:31.915807" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:31.915062" elapsed="0.001722"/>
</kw>
<msg time="2026-10-20T23:34:31.916909" level="INFO">Repeating keyword, round 15/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:31.918060" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:31.917256" elapsed="0.003335"/>
</kw>
<msg time="2026-10-20T23:34:31.920752" level="INFO">Repeating keyword, round 16/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:31.921984" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:31.921145" elapsed="0.002470"/>
</kw>
<msg time="2026-10-20T23:34:31.923739" level="INFO">Repeating keyword, round 17/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:31.925006" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:31.924203" elapsed="0.003560"/>
</kw>
<msg time="2026-10-20T23:34:31.927961" level="INFO">Repeating keyword, round 18/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:31.929281" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:31.928491" elapsed="0.001742"/>
</kw>
<msg time="2026-10-20T23:34:31.930330" level="INFO">Repeating keyword, round 19/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:31.930990" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:31.930564" elapsed="0.002812"/>
</kw>
<msg time="2026-10-20T23:34:31.933473" level="INFO">Repeating keyword, round 20/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:31.934248" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:31.933695" elapsed="0.001382"/>
</kw>
<msg time="2026-10-20T23:34:31.935146" level="INFO">Repeating keyword, round 21/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:31.935920" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:31.935515" elapsed="0.002457"/>
</kw>
<msg time="2026-10-20T23:34:31.938061" level="INFO">Repeating keyword, round 22/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:31.938800" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:31.938291" elapsed="0.001383"/>
</kw>
<msg time="2026-10-20T23:34:31.939745" level="INFO">Repeating keyword, round 23/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:31.940437" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:31.939956" elapsed="0.003120"/>
</kw>
<msg time="2026-10-20T23:34:31.943162" level="INFO">Repeating keyword, round 24/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:31.944663" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:31.943411" elapsed="0.002135"/>
</kw>
<msg time="2026-10-20T23:34:31.945623" level="INFO">Repeating keyword, round 25/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:31.946271" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:31.945868" elapsed="0.003259"/>
</kw>
<msg time="2026-10-20T23:34:31.949235" level="INFO">Repeating keyword, round 26/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:31.949995" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:31.949514" elapsed="0.001309"/>
</kw>
<msg time="2026-10-20T23:34:31.950943" level="INFO">Repeating keyword, round 27/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:31.951639" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:31.951170" elapsed="0.002263"/>
</kw>
<msg time="2026-10-20T23:34:31.953517" level="INFO">Repeating keyword, round 28/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:31.954127" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:31.953731" elapsed="0.003592"/>
</kw>
<msg time="2026-10-20T23:34:31.957425" level="INFO">Repeating keyword, round 29/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:31.958119" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:31.957654" elapsed="0.001320"/>
</kw>
<msg time="2026-10-20T23:34:31.959045" level="INFO">Repeating keyword, round 30/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:31.959745" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:31.959255" elapsed="0.002452"/>
</kw>
<msg time="2026-10-20T23:34:31.961793" level="INFO">Repeating keyword, round 31/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:31.962510" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:31.962008" elapsed="0.001283"/>
</kw>
<msg time="2026-10-20T23:34:31.963408" level="INFO">Repeating keyword, round 32/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:31.964385" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:31.963709" elapsed="0.003356"/>
</kw>
<msg time="2026-10-20T23:34:31.967141" level="INFO">Repeating keyword, round 33/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:31.967867" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:31.967383" elapsed="0.001366"/>
</kw>
<msg time="2026-10-20T23:34:31.968826" level="INFO">Repeating keyword, round 34/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:31.969483" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:31.969040" elapsed="0.002353"/>
</kw>
<msg time="2026-10-20T23:34:31.971484" level="INFO">Repeating keyword, round 35/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:31.972093" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:31.971697" elapsed="0.002440"/>
</kw>
<msg time="2026-10-20T23:34:31.974212" level="INFO">Repeating keyword, round 36/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:31.974935" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:31.974447" elapsed="0.001332"/>
</kw>
<msg time="2026-10-20T23:34:31.975900" level="INFO">Repeating keyword, round 37/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:31.976584" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:31.976112" elapsed="0.002703"/>
</kw>
<msg time="2026-10-20T23:34:31.978891" level="INFO">Repeating keyword, round 38/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:31.979616" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:31.979105" elapsed="0.002707"/>
</kw>
<msg time="2026-10-20T23:34:31.981885" level="INFO">Repeating keyword, round 39/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:31.982689" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:31.982100" elapsed="0.001454"/>
</kw>
<msg time="2026-10-20T23:34:31.983629" level="INFO">Repeating keyword, round 40/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:31.984238" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:31.983841" elapsed="0.002369"/>
</kw>
<msg time="2026-10-20T23:34:31.986285" level="INFO">Repeating keyword, round 41/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:31.987022" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:31.986561" elapsed="0.001400"/>
</kw>
<msg time="2026-10-20T23:34:31.988103" level="INFO">Repeating keyword, round 42/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:31.988762" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:31.988345" elapsed="0.002879"/>
</kw>
<msg time="2026-10-20T23:34:31.991304" level="INFO">Repeating keyword, round 43/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:31.992028" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:31.991565" elapsed="0.001330"/>
</kw>
<msg time="2026-10-20T23:34:31.992982" level="INFO">Repeating keyword, round 44/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:31.993647" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:31.993195" elapsed="0.002311"/>
</kw>
<msg time="2026-10-20T23:34:31.995583" level="INFO">Repeating keyword, round 45/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:31.996195" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:31.995798" elapsed="0.002395"/>
</kw>
<msg time="2026-10-20T23:34:31.998269" level="INFO">Repeating keyword, round 46/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:31.999001" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:31.998538" elapsed="0.001383"/>
</kw>
<msg time="2026-10-20T23:34:31.999973" level="INFO">Repeating keyword, round 47/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.000439" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.000126" elapsed="0.002823"/>
</kw>
<msg time="2026-10-20T23:34:32.003011" level="INFO">Repeating keyword, round 48/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.003528" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.003166" elapsed="0.001062"/>
</kw>
<msg time="2026-10-20T23:34:32.004281" level="INFO">Repeating keyword, round 49/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.004804" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.004477" elapsed="0.002227"/>
</kw>
<msg time="2026-10-20T23:34:32.006767" level="INFO">Repeating keyword, round 50/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.007240" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.006919" elapsed="0.001004"/>
</kw>
<msg time="2026-10-20T23:34:32.007975" level="INFO">Repeating keyword, round 51/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.008434" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.008127" elapsed="0.002547"/>
</kw>
<msg time="2026-10-20T23:34:32.010736" level="INFO">Repeating keyword, round 52/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.011174" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.010888" elapsed="0.001028"/>
</kw>
<msg time="2026-10-20T23:34:32.011969" level="INFO">Repeating keyword, round 53/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.012489" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.012120" elapsed="0.001885"/>
</kw>
<msg time="2026-10-20T23:34:32.014068" level="INFO">Repeating keyword, round 54/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.014701" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.014221" elapsed="0.001166"/>
</kw>
<msg time="2026-10-20T23:34:32.015441" level="INFO">Repeating keyword, round 55/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.015952" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.015664" elapsed="0.001815"/>
</kw>
<msg time="2026-10-20T23:34:32.017542" level="INFO">Repeating keyword, round 56/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.018018" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.017695" elapsed="0.001255"/>
</kw>
<msg time="2026-10-20T23:34:32.019003" level="INFO">Repeating keyword, round 57/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.019538" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.019194" elapsed="0.001491"/>
</kw>
<msg time="2026-10-20T23:34:32.020750" level="INFO">Repeating keyword, round 58/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.021276" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.020904" elapsed="0.001932"/>
</kw>
<msg time="2026-10-20T23:34:32.022896" level="INFO">Repeating keyword, round 59/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.023416" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.023051" elapsed="0.001047"/>
</kw>
<msg time="2026-10-20T23:34:32.024205" level="INFO">Repeating keyword, round 60/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.024741" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.024422" elapsed="0.002330"/>
</kw>
<msg time="2026-10-20T23:34:32.026829" level="INFO">Repeating keyword, round 61/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.027347" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.026987" elapsed="0.000992"/>
</kw>
<msg time="2026-10-20T23:34:32.028032" level="INFO">Repeating keyword, round 62/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.028554" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.028217" elapsed="0.001845"/>
</kw>
<msg time="2026-10-20T23:34:32.030125" level="INFO">Repeating keyword, round 63/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.030687" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.030278" elapsed="0.000961"/>
</kw>
<msg time="2026-10-20T23:34:32.031291" level="INFO">Repeating keyword, round 64/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.031806" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.031477" elapsed="0.001867"/>
</kw>
<msg time="2026-10-20T23:34:32.033399" level="INFO">Repeating keyword, round 65/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.033853" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.033567" elapsed="0.000945"/>
</kw>
<msg time="2026-10-20T23:34:32.034565" level="INFO">Repeating keyword, round 66/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.035034" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.034717" elapsed="0.001863"/>
</kw>
<msg time="2026-10-20T23:34:32.036647" level="INFO">Repeating keyword, round 67/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.037129" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.036806" elapsed="0.000905"/>
</kw>
<msg time="2026-10-20T23:34:32.037764" level="INFO">Repeating keyword, round 68/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.038243" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.037915" elapsed="0.001872"/>
</kw>
<msg time="2026-10-20T23:34:32.039853" level="INFO">Repeating keyword, round 69/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.040357" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.040007" elapsed="0.001145"/>
</kw>
<msg time="2026-10-20T23:34:32.041205" level="INFO">Repeating keyword, round 70/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.041701" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.041395" elapsed="0.001424"/>
</kw>
<msg time="2026-10-20T23:34:32.042883" level="INFO">Repeating keyword, round 71/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.043381" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.043034" elapsed="0.001931"/>
</kw>
<msg time="2026-10-20T23:34:32.045028" level="INFO">Repeating keyword, round 72/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.045547" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.045180" elapsed="0.000947"/>
</kw>
<msg time="2026-10-20T23:34:32.046179" level="INFO">Repeating keyword, round 73/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.046717" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.046374" elapsed="0.002057"/>
</kw>
<msg time="2026-10-20T23:34:32.048499" level="INFO">Repeating keyword, round 74/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.048940" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.048652" elapsed="0.001958"/>
</kw>
<msg time="2026-10-20T23:34:32.050672" level="INFO">Repeating keyword, round 75/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.051179" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.050826" elapsed="0.001863"/>
</kw>
<msg time="2026-10-20T23:34:32.052755" level="INFO">Repeating keyword, round 76/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.053410" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.052909" elapsed="0.001091"/>
</kw>
<msg time="2026-10-20T23:34:32.054053" level="INFO">Repeating keyword, round 77/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.054615" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.054245" elapsed="0.001904"/>
</kw>
<msg time="2026-10-20T23:34:32.056215" level="INFO">Repeating keyword, round 78/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.056742" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.056401" elapsed="0.001130"/>
</kw>
<msg time="2026-10-20T23:34:32.057584" level="INFO">Repeating keyword, round 79/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.058077" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.057774" elapsed="0.001484"/>
</kw>
<msg time="2026-10-20T23:34:32.059340" level="INFO">Repeating keyword, round 80/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.059915" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.059581" elapsed="0.000928"/>
</kw>
<msg time="2026-10-20T23:34:32.060561" level="INFO">Repeating keyword, round 81/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.061046" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.060747" elapsed="0.001888"/>
</kw>
<msg time="2026-10-20T23:34:32.062697" level="INFO">Repeating keyword, round 82/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.063171" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.062849" elapsed="0.000842"/>
</kw>
<msg time="2026-10-20T23:34:32.063742" level="INFO">Repeating keyword, round 83/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.064193" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.063907" elapsed="0.002818"/>
</kw>
<msg time="2026-10-20T23:34:32.066788" level="INFO">Repeating keyword, round 84/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.067271" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.066942" elapsed="0.000950"/>
</kw>
<msg time="2026-10-20T23:34:32.067944" level="INFO">Repeating keyword, round 85/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.068447" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.068098" elapsed="0.002724"/>
</kw>
<msg time="2026-10-20T23:34:32.070886" level="INFO">Repeating keyword, round 86/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.071395" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.071041" elapsed="0.000955"/>
</kw>
<msg time="2026-10-20T23:34:32.072048" level="INFO">Repeating keyword, round 87/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.072562" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.072235" elapsed="0.002745"/>
</kw>
<msg time="2026-10-20T23:34:32.075046" level="INFO">Repeating keyword, round 88/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.075582" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.075203" elapsed="0.000977"/>
</kw>
<msg time="2026-10-20T23:34:32.076231" level="INFO">Repeating keyword, round 89/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.076749" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.076403" elapsed="0.002365"/>
</kw>
<msg time="2026-10-20T23:34:32.078971" level="INFO">Repeating keyword, round 90/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.080439" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.079526" elapsed="0.001689"/>
</kw>
<msg time="2026-10-20T23:34:32.081297" level="INFO">Repeating keyword, round 91/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.082004" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.081591" elapsed="0.002553"/>
</kw>
<msg time="2026-10-20T23:34:32.084247" level="INFO">Repeating keyword, round 92/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.085010" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.084527" elapsed="0.001195"/>
</kw>
<msg time="2026-10-20T23:34:32.085798" level="INFO">Repeating keyword, round 93/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.086538" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.086014" elapsed="0.001140"/>
</kw>
<msg time="2026-10-20T23:34:32.087226" level="INFO">Repeating keyword, round 94/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.087942" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.087532" elapsed="0.002520"/>
</kw>
<msg time="2026-10-20T23:34:32.090147" level="INFO">Repeating keyword, round 95/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.091022" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.090538" elapsed="0.001155"/>
</kw>
<msg time="2026-10-20T23:34:32.091768" level="INFO">Repeating keyword, round 96/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.092504" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.092025" elapsed="0.001106"/>
</kw>
<msg time="2026-10-20T23:34:32.093205" level="INFO">Repeating keyword, round 97/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.093913" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.093491" elapsed="0.002548"/>
</kw>
<msg time="2026-10-20T23:34:32.096127" level="INFO">Repeating keyword, round 98/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.097152" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.096389" elapsed="0.001411"/>
</kw>
<msg time="2026-10-20T23:34:32.097882" level="INFO">Repeating keyword, round 99/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.098554" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.098095" elapsed="0.001083"/>
</kw>
<msg time="2026-10-20T23:34:32.099252" level="INFO">Repeating keyword, round 100/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.099959" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.099540" elapsed="0.002571"/>
</kw>
<msg time="2026-10-20T23:34:32.102202" level="INFO">Repeating keyword, round 101/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.102971" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.102476" elapsed="0.001150"/>
</kw>
<msg time="2026-10-20T23:34:32.103740" level="INFO">Repeating keyword, round 102/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.104424" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.103986" elapsed="0.002453"/>
</kw>
<msg time="2026-10-20T23:34:32.106530" level="INFO">Repeating keyword, round 103/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.107202" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.106766" elapsed="0.001792"/>
</kw>
<msg time="2026-10-20T23:34:32.108616" level="INFO">Repeating keyword, round 104/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.109097" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.108794" elapsed="0.000888"/>
</kw>
<msg time="2026-10-20T23:34:32.109740" level="INFO">Repeating keyword, round 105/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.110195" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.109893" elapsed="0.001922"/>
</kw>
<msg time="2026-10-20T23:34:32.111871" level="INFO">Repeating keyword, round 106/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.112405" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.112056" elapsed="0.000909"/>
</kw>
<msg time="2026-10-20T23:34:32.113028" level="INFO">Repeating keyword, round 107/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.113558" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.113187" elapsed="0.001176"/>
</kw>
<msg time="2026-10-20T23:34:32.114416" level="INFO">Repeating keyword, round 108/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.114878" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.114591" elapsed="0.001811"/>
</kw>
<msg time="2026-10-20T23:34:32.116477" level="INFO">Repeating keyword, round 109/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.116977" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.116641" elapsed="0.000958"/>
</kw>
<msg time="2026-10-20T23:34:32.117651" level="INFO">Repeating keyword, round 110/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.118131" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.117805" elapsed="0.001189"/>
</kw>
<msg time="2026-10-20T23:34:32.119048" level="INFO">Repeating keyword, round 111/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.119567" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.119214" elapsed="0.001882"/>
</kw>
<msg time="2026-10-20T23:34:32.121160" level="INFO">Repeating keyword, round 112/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.121699" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.121353" elapsed="0.000918"/>
</kw>
<msg time="2026-10-20T23:34:32.122402" level="INFO">Repeating keyword, round 113/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.122900" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.122573" elapsed="0.001869"/>
</kw>
<msg time="2026-10-20T23:34:32.124510" level="INFO">Repeating keyword, round 114/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.124972" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.124679" elapsed="0.001070"/>
</kw>
<msg time="2026-10-20T23:34:32.125805" level="INFO">Repeating keyword, round 115/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.126293" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.125986" elapsed="0.001549"/>
</kw>
<msg time="2026-10-20T23:34:32.127627" level="INFO">Repeating keyword, round 116/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.128363" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.127850" elapsed="0.001188"/>
</kw>
<msg time="2026-10-20T23:34:32.129101" level="INFO">Repeating keyword, round 117/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.129607" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.129259" elapsed="0.002099"/>
</kw>
<msg time="2026-10-20T23:34:32.131427" level="INFO">Repeating keyword, round 118/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.131925" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.131596" elapsed="0.000934"/>
</kw>
<msg time="2026-10-20T23:34:32.132585" level="INFO">Repeating keyword, round 119/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.133064" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.132767" elapsed="0.001145"/>
</kw>
<msg time="2026-10-20T23:34:32.133966" level="INFO">Repeating keyword, round 120/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.137010" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.134119" elapsed="0.004626"/>
</kw>
<msg time="2026-10-20T23:34:32.138809" level="INFO">Repeating keyword, round 121/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.139297" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.138966" elapsed="0.000931"/>
</kw>
<msg time="2026-10-20T23:34:32.139949" level="INFO">Repeating keyword, round 122/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.140451" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.140102" elapsed="0.001929"/>
</kw>
<msg time="2026-10-20T23:34:32.142085" level="INFO">Repeating keyword, round 123/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.142623" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.142240" elapsed="0.000931"/>
</kw>
<msg time="2026-10-20T23:34:32.143223" level="INFO">Repeating keyword, round 124/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.143764" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.143435" elapsed="0.001829"/>
</kw>
<msg time="2026-10-20T23:34:32.145355" level="INFO">Repeating keyword, round 125/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.145870" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.145525" elapsed="0.000894"/>
</kw>
<msg time="2026-10-20T23:34:32.146485" level="INFO">Repeating keyword, round 126/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.146980" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.146643" elapsed="0.001882"/>
</kw>
<msg time="2026-10-20T23:34:32.148587" level="INFO">Repeating keyword, round 127/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.149078" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.148751" elapsed="0.000923"/>
</kw>
<msg time="2026-10-20T23:34:32.149734" level="INFO">Repeating keyword, round 128/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.150217" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.149922" elapsed="0.001859"/>
</kw>
<msg time="2026-10-20T23:34:32.151837" level="INFO">Repeating keyword, round 129/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.152363" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.151992" elapsed="0.000928"/>
</kw>
<msg time="2026-10-20T23:34:32.152972" level="INFO">Repeating keyword, round 130/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.153492" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.153163" elapsed="0.001574"/>
</kw>
<msg time="2026-10-20T23:34:32.154899" level="INFO">Repeating keyword, round 131/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.156020" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.155274" elapsed="0.001489"/>
</kw>
<msg time="2026-10-20T23:34:32.156817" level="INFO">Repeating keyword, round 132/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.157282" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.156980" elapsed="0.001915"/>
</kw>
<msg time="2026-10-20T23:34:32.158960" level="INFO">Repeating keyword, round 133/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.159525" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.159123" elapsed="0.000980"/>
</kw>
<msg time="2026-10-20T23:34:32.160162" level="INFO">Repeating keyword, round 134/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.160700" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.160379" elapsed="0.001908"/>
</kw>
<msg time="2026-10-20T23:34:32.162381" level="INFO">Repeating keyword, round 135/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.162930" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.162557" elapsed="0.001012"/>
</kw>
<msg time="2026-10-20T23:34:32.163635" level="INFO">Repeating keyword, round 136/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.164097" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.163796" elapsed="0.001926"/>
</kw>
<msg time="2026-10-20T23:34:32.165785" level="INFO">Repeating keyword, round 137/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.166281" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.165942" elapsed="0.000955"/>
</kw>
<msg time="2026-10-20T23:34:32.166982" level="INFO">Repeating keyword, round 138/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.167515" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.167149" elapsed="0.001921"/>
</kw>
<msg time="2026-10-20T23:34:32.169134" level="INFO">Repeating keyword, round 139/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.169693" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.169291" elapsed="0.001004"/>
</kw>
<msg time="2026-10-20T23:34:32.170375" level="INFO">Repeating keyword, round 140/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.170860" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.170557" elapsed="0.001007"/>
</kw>
<msg time="2026-10-20T23:34:32.171676" level="INFO">Repeating keyword, round 141/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.172520" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.171996" elapsed="0.001546"/>
</kw>
<msg time="2026-10-20T23:34:32.173644" level="INFO">Repeating keyword, round 142/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.174415" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.173947" elapsed="0.002403"/>
</kw>
<msg time="2026-10-20T23:34:32.176407" level="INFO">Repeating keyword, round 143/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.176929" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.176579" elapsed="0.000961"/>
</kw>
<msg time="2026-10-20T23:34:32.177594" level="INFO">Repeating keyword, round 144/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.178041" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.177751" elapsed="0.001916"/>
</kw>
<msg time="2026-10-20T23:34:32.179729" level="INFO">Repeating keyword, round 145/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.180246" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.179901" elapsed="0.000986"/>
</kw>
<msg time="2026-10-20T23:34:32.180950" level="INFO">Repeating keyword, round 146/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.181492" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.181107" elapsed="0.001965"/>
</kw>
<msg time="2026-10-20T23:34:32.183135" level="INFO">Repeating keyword, round 147/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.183689" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.183298" elapsed="0.000985"/>
</kw>
<msg time="2026-10-20T23:34:32.184360" level="INFO">Repeating keyword, round 148/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.184956" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.184663" elapsed="0.001950"/>
</kw>
<msg time="2026-10-20T23:34:32.186677" level="INFO">Repeating keyword, round 149/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.187177" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.186835" elapsed="0.000958"/>
</kw>
<msg time="2026-10-20T23:34:32.187846" level="INFO">Repeating keyword, round 150/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.188357" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.188043" elapsed="0.001566"/>
</kw>
<msg time="2026-10-20T23:34:32.189722" level="INFO">Repeating keyword, round 151/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.190581" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.190053" elapsed="0.001162"/>
</kw>
<msg time="2026-10-20T23:34:32.191269" level="INFO">Repeating keyword, round 152/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.191779" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.191475" elapsed="0.001069"/>
</kw>
<msg time="2026-10-20T23:34:32.192598" level="INFO">Repeating keyword, round 153/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.193066" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.192753" elapsed="0.001264"/>
</kw>
<msg time="2026-10-20T23:34:32.194124" level="INFO">Repeating keyword, round 154/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.194944" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.194468" elapsed="0.002410"/>
</kw>
<msg time="2026-10-20T23:34:32.196941" level="INFO">Repeating keyword, round 155/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.197479" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.197103" elapsed="0.000989"/>
</kw>
<msg time="2026-10-20T23:34:32.198145" level="INFO">Repeating keyword, round 156/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.198682" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.198367" elapsed="0.001910"/>
</kw>
<msg time="2026-10-20T23:34:32.200372" level="INFO">Repeating keyword, round 157/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.200980" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.200628" elapsed="0.000994"/>
</kw>
<msg time="2026-10-20T23:34:32.201688" level="INFO">Repeating keyword, round 158/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.202145" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.201844" elapsed="0.001936"/>
</kw>
<msg time="2026-10-20T23:34:32.203848" level="INFO">Repeating keyword, round 159/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.204407" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.204025" elapsed="0.000985"/>
</kw>
<msg time="2026-10-20T23:34:32.205062" level="INFO">Repeating keyword, round 160/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.205597" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.205269" elapsed="0.001297"/>
</kw>
<msg time="2026-10-20T23:34:32.206678" level="INFO">Repeating keyword, round 161/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.207432" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.206948" elapsed="0.001198"/>
</kw>
<msg time="2026-10-20T23:34:32.208203" level="INFO">Repeating keyword, round 162/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.208690" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.208381" elapsed="0.001474"/>
</kw>
<msg time="2026-10-20T23:34:32.209959" level="INFO">Repeating keyword, round 163/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.210762" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.210224" elapsed="0.001185"/>
</kw>
<msg time="2026-10-20T23:34:32.211476" level="INFO">Repeating keyword, round 164/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.212130" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.211632" elapsed="0.001123"/>
</kw>
<msg time="2026-10-20T23:34:32.212806" level="INFO">Repeating keyword, round 165/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.213251" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.212962" elapsed="0.001455"/>
</kw>
<msg time="2026-10-20T23:34:32.214557" level="INFO">Repeating keyword, round 166/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.215015" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.214719" elapsed="0.002037"/>
</kw>
<msg time="2026-10-20T23:34:32.216891" level="INFO">Repeating keyword, round 167/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.217419" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.217070" elapsed="0.002090"/>
</kw>
<msg time="2026-10-20T23:34:32.219226" level="INFO">Repeating keyword, round 168/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.219791" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.219419" elapsed="0.000977"/>
</kw>
<msg time="2026-10-20T23:34:32.220451" level="INFO">Repeating keyword, round 169/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.220959" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.220629" elapsed="0.001952"/>
</kw>
<msg time="2026-10-20T23:34:32.222644" level="INFO">Repeating keyword, round 170/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.223139" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.222799" elapsed="0.000934"/>
</kw>
<msg time="2026-10-20T23:34:32.223786" level="INFO">Repeating keyword, round 171/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.224292" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.223980" elapsed="0.001892"/>
</kw>
<msg time="2026-10-20T23:34:32.225936" level="INFO">Repeating keyword, round 172/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.226480" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.226090" elapsed="0.000967"/>
</kw>
<msg time="2026-10-20T23:34:32.227109" level="INFO">Repeating keyword, round 173/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.227667" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.227318" elapsed="0.001892"/>
</kw>
<msg time="2026-10-20T23:34:32.229278" level="INFO">Repeating keyword, round 174/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.229827" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.229482" elapsed="0.000963"/>
</kw>
<msg time="2026-10-20T23:34:32.230518" level="INFO">Repeating keyword, round 175/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.230968" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.230675" elapsed="0.001860"/>
</kw>
<msg time="2026-10-20T23:34:32.232597" level="INFO">Repeating keyword, round 176/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.233087" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.232752" elapsed="0.000952"/>
</kw>
<msg time="2026-10-20T23:34:32.233772" level="INFO">Repeating keyword, round 177/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.234253" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.233964" elapsed="0.001958"/>
</kw>
<msg time="2026-10-20T23:34:32.235979" level="INFO">Repeating keyword, round 178/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.236535" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.236142" elapsed="0.000972"/>
</kw>
<msg time="2026-10-20T23:34:32.237164" level="INFO">Repeating keyword, round 179/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.237722" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.237402" elapsed="0.001211"/>
</kw>
<msg time="2026-10-20T23:34:32.238736" level="INFO">Repeating keyword, round 180/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.239564" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.239021" elapsed="0.001193"/>
</kw>
<msg time="2026-10-20T23:34:32.240264" level="INFO">Repeating keyword, round 181/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.240769" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.240473" elapsed="0.001826"/>
</kw>
<msg time="2026-10-20T23:34:32.242380" level="INFO">Repeating keyword, round 182/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.242887" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.242553" elapsed="0.001155"/>
</kw>
<msg time="2026-10-20T23:34:32.243762" level="INFO">Repeating keyword, round 183/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.244211" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.243919" elapsed="0.001573"/>
</kw>
<msg time="2026-10-20T23:34:32.245550" level="INFO">Repeating keyword, round 184/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.246036" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.245709" elapsed="0.002153"/>
</kw>
<msg time="2026-10-20T23:34:32.247916" level="INFO">Repeating keyword, round 185/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.248437" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.248069" elapsed="0.000973"/>
</kw>
<msg time="2026-10-20T23:34:32.249127" level="INFO">Repeating keyword, round 186/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.249903" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.249289" elapsed="0.001236"/>
</kw>
<msg time="2026-10-20T23:34:32.250578" level="INFO">Repeating keyword, round 187/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.251020" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.250734" elapsed="0.001871"/>
</kw>
<msg time="2026-10-20T23:34:32.252662" level="INFO">Repeating keyword, round 188/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.253168" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.252830" elapsed="0.001780"/>
</kw>
<msg time="2026-10-20T23:34:32.254667" level="INFO">Repeating keyword, round 189/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.255176" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.254836" elapsed="0.001782"/>
</kw>
<msg time="2026-10-20T23:34:32.256676" level="INFO">Repeating keyword, round 190/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.257179" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.256842" elapsed="0.001820"/>
</kw>
<msg time="2026-10-20T23:34:32.258717" level="INFO">Repeating keyword, round 191/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.259220" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.258884" elapsed="0.001800"/>
</kw>
<msg time="2026-10-20T23:34:32.260742" level="INFO">Repeating keyword, round 192/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.261245" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.260911" elapsed="0.000952"/>
</kw>
<msg time="2026-10-20T23:34:32.261927" level="INFO">Repeating keyword, round 193/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.262475" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.262124" elapsed="0.001917"/>
</kw>
<msg time="2026-10-20T23:34:32.264099" level="INFO">Repeating keyword, round 194/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.264641" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.264254" elapsed="0.001461"/>
</kw>
<msg time="2026-10-20T23:34:32.265769" level="INFO">Repeating keyword, round 195/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.266228" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.265923" elapsed="0.001900"/>
</kw>
<msg time="2026-10-20T23:34:32.267877" level="INFO">Repeating keyword, round 196/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.268404" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.268039" elapsed="0.001205"/>
</kw>
<msg time="2026-10-20T23:34:32.269299" level="INFO">Repeating keyword, round 197/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.269798" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.269497" elapsed="0.001477"/>
</kw>
<msg time="2026-10-20T23:34:32.271029" level="INFO">Repeating keyword, round 198/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.271571" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.271199" elapsed="0.002237"/>
</kw>
<msg time="2026-10-20T23:34:32.273515" level="INFO">Repeating keyword, round 199/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.274014" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.273678" elapsed="0.000989"/>
</kw>
<msg time="2026-10-20T23:34:32.274746" level="INFO">Repeating keyword, round 200/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.275207" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.274911" elapsed="0.001908"/>
</kw>
<msg time="2026-10-20T23:34:32.276878" level="INFO">Repeating keyword, round 201/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.277453" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.277084" elapsed="0.001006"/>
</kw>
<msg time="2026-10-20T23:34:32.278150" level="INFO">Repeating keyword, round 202/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.278657" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.278337" elapsed="0.001876"/>
</kw>
<msg time="2026-10-20T23:34:32.280277" level="INFO">Repeating keyword, round 203/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.280829" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.280493" elapsed="0.000939"/>
</kw>
<msg time="2026-10-20T23:34:32.281502" level="INFO">Repeating keyword, round 204/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.281949" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.281663" elapsed="0.001913"/>
</kw>
<msg time="2026-10-20T23:34:32.283633" level="INFO">Repeating keyword, round 205/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.284119" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.283788" elapsed="0.001004"/>
</kw>
<msg time="2026-10-20T23:34:32.284850" level="INFO">Repeating keyword, round 206/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.285288" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.285002" elapsed="0.001897"/>
</kw>
<msg time="2026-10-20T23:34:32.286955" level="INFO">Repeating keyword, round 207/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.287499" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.287110" elapsed="0.001020"/>
</kw>
<msg time="2026-10-20T23:34:32.288189" level="INFO">Repeating keyword, round 208/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.288787" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.288370" elapsed="0.001211"/>
</kw>
<msg time="2026-10-20T23:34:32.289634" level="INFO">Repeating keyword, round 209/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.290074" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.289787" elapsed="0.001888"/>
</kw>
<msg time="2026-10-20T23:34:32.291730" level="INFO">Repeating keyword, round 210/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.292215" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.291886" elapsed="0.000963"/>
</kw>
<msg time="2026-10-20T23:34:32.292939" level="INFO">Repeating keyword, round 211/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.293401" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.293094" elapsed="0.001548"/>
</kw>
<msg time="2026-10-20T23:34:32.294774" level="INFO">Repeating keyword, round 212/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.295760" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.295094" elapsed="0.001451"/>
</kw>
<msg time="2026-10-20T23:34:32.296598" level="INFO">Repeating keyword, round 213/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.297052" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.296760" elapsed="0.001975"/>
</kw>
<msg time="2026-10-20T23:34:32.298788" level="INFO">Repeating keyword, round 214/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.299283" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.298945" elapsed="0.001018"/>
</kw>
<msg time="2026-10-20T23:34:32.300016" level="INFO">Repeating keyword, round 215/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.300517" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.300172" elapsed="0.001911"/>
</kw>
<msg time="2026-10-20T23:34:32.302145" level="INFO">Repeating keyword, round 216/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.302688" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.302322" elapsed="0.001031"/>
</kw>
<msg time="2026-10-20T23:34:32.303414" level="INFO">Repeating keyword, round 217/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.303875" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.303586" elapsed="0.001938"/>
</kw>
<msg time="2026-10-20T23:34:32.305586" level="INFO">Repeating keyword, round 218/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.306107" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.305743" elapsed="0.001082"/>
</kw>
<msg time="2026-10-20T23:34:32.307008" level="INFO">Repeating keyword, round 219/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.307502" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.307167" elapsed="0.001379"/>
</kw>
<msg time="2026-10-20T23:34:32.308654" level="INFO">Repeating keyword, round 220/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.309522" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.308936" elapsed="0.001264"/>
</kw>
<msg time="2026-10-20T23:34:32.310254" level="INFO">Repeating keyword, round 221/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.310755" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.310439" elapsed="0.001536"/>
</kw>
<msg time="2026-10-20T23:34:32.312076" level="INFO">Repeating keyword, round 222/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.312834" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.312391" elapsed="0.002344"/>
</kw>
<msg time="2026-10-20T23:34:32.314802" level="INFO">Repeating keyword, round 223/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.315334" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.314961" elapsed="0.001061"/>
</kw>
<msg time="2026-10-20T23:34:32.316077" level="INFO">Repeating keyword, round 224/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.316575" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.316235" elapsed="0.001960"/>
</kw>
<msg time="2026-10-20T23:34:32.318266" level="INFO">Repeating keyword, round 225/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.318807" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.318447" elapsed="0.001065"/>
</kw>
<msg time="2026-10-20T23:34:32.319568" level="INFO">Repeating keyword, round 226/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.320015" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.319725" elapsed="0.002040"/>
</kw>
<msg time="2026-10-20T23:34:32.321821" level="INFO">Repeating keyword, round 227/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.322356" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.321976" elapsed="0.001030"/>
</kw>
<msg time="2026-10-20T23:34:32.323058" level="INFO">Repeating keyword, round 228/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.323548" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.323217" elapsed="0.001205"/>
</kw>
<msg time="2026-10-20T23:34:32.324495" level="INFO">Repeating keyword, round 229/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.324946" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.324657" elapsed="0.001290"/>
</kw>
<msg time="2026-10-20T23:34:32.326009" level="INFO">Repeating keyword, round 230/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.326753" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.326163" elapsed="0.002398"/>
</kw>
<msg time="2026-10-20T23:34:32.328671" level="INFO">Repeating keyword, round 231/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.329489" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.328952" elapsed="0.001270"/>
</kw>
<msg time="2026-10-20T23:34:32.330275" level="INFO">Repeating keyword, round 232/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.330790" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.330487" elapsed="0.000997"/>
</kw>
<msg time="2026-10-20T23:34:32.331545" level="INFO">Repeating keyword, round 233/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.331997" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.331703" elapsed="0.001343"/>
</kw>
<msg time="2026-10-20T23:34:32.333142" level="INFO">Repeating keyword, round 234/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.333983" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.333454" elapsed="0.001256"/>
</kw>
<msg time="2026-10-20T23:34:32.334767" level="INFO">Repeating keyword, round 235/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.335219" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.334933" elapsed="0.002021"/>
</kw>
<msg time="2026-10-20T23:34:32.337017" level="INFO">Repeating keyword, round 236/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.337544" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.337173" elapsed="0.001197"/>
</kw>
<msg time="2026-10-20T23:34:32.338433" level="INFO">Repeating keyword, round 237/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.338894" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.338605" elapsed="0.001817"/>
</kw>
<msg time="2026-10-20T23:34:32.340489" level="INFO">Repeating keyword, round 238/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.340953" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.340645" elapsed="0.001033"/>
</kw>
<msg time="2026-10-20T23:34:32.341732" level="INFO">Repeating keyword, round 239/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.342224" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.341923" elapsed="0.000990"/>
</kw>
<msg time="2026-10-20T23:34:32.342966" level="INFO">Repeating keyword, round 240/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.343525" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.343169" elapsed="0.001255"/>
</kw>
<msg time="2026-10-20T23:34:32.344492" level="INFO">Repeating keyword, round 241/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.344939" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.344648" elapsed="0.001334"/>
</kw>
<msg time="2026-10-20T23:34:32.346044" level="INFO">Repeating keyword, round 242/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.346599" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.346196" elapsed="0.001122"/>
</kw>
<msg time="2026-10-20T23:34:32.347390" level="INFO">Repeating keyword, round 243/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.347961" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.347666" elapsed="0.001098"/>
</kw>
<msg time="2026-10-20T23:34:32.348814" level="INFO">Repeating keyword, round 244/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.349248" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.348965" elapsed="0.001946"/>
</kw>
<msg time="2026-10-20T23:34:32.350974" level="INFO">Repeating keyword, round 245/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.351530" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.351141" elapsed="0.001022"/>
</kw>
<msg time="2026-10-20T23:34:32.352216" level="INFO">Repeating keyword, round 246/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.352773" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.352478" elapsed="0.001935"/>
</kw>
<msg time="2026-10-20T23:34:32.354482" level="INFO">Repeating keyword, round 247/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.354976" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.354640" elapsed="0.001022"/>
</kw>
<msg time="2026-10-20T23:34:32.355713" level="INFO">Repeating keyword, round 248/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.356197" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.355866" elapsed="0.002536"/>
</kw>
<msg time="2026-10-20T23:34:32.358457" level="INFO">Repeating keyword, round 249/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.358958" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.358656" elapsed="0.000999"/>
</kw>
<msg time="2026-10-20T23:34:32.359708" level="INFO">Repeating keyword, round 250/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.360194" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.359906" elapsed="0.001644"/>
</kw>
<msg time="2026-10-20T23:34:32.361602" level="INFO">Repeating keyword, round 251/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.362055" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.361758" elapsed="0.002300"/>
</kw>
<msg time="2026-10-20T23:34:32.364113" level="INFO">Repeating keyword, round 252/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.364839" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.364267" elapsed="0.001393"/>
</kw>
<msg time="2026-10-20T23:34:32.365713" level="INFO">Repeating keyword, round 253/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.366203" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.365916" elapsed="0.001929"/>
</kw>
<msg time="2026-10-20T23:34:32.367913" level="INFO">Repeating keyword, round 254/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.368542" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.368153" elapsed="0.001096"/>
</kw>
<msg time="2026-10-20T23:34:32.369301" level="INFO">Repeating keyword, round 255/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.369832" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.369490" elapsed="0.001932"/>
</kw>
<msg time="2026-10-20T23:34:32.371500" level="INFO">Repeating keyword, round 256/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.371989" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.371657" elapsed="0.001029"/>
</kw>
<msg time="2026-10-20T23:34:32.372739" level="INFO">Repeating keyword, round 257/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.373244" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.372896" elapsed="0.001811"/>
</kw>
<msg time="2026-10-20T23:34:32.374868" level="INFO">Repeating keyword, round 258/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.375984" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.375324" elapsed="0.001488"/>
</kw>
<msg time="2026-10-20T23:34:32.376867" level="INFO">Repeating keyword, round 259/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.377364" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.377026" elapsed="0.002024"/>
</kw>
<msg time="2026-10-20T23:34:32.379125" level="INFO">Repeating keyword, round 260/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.379675" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.379284" elapsed="0.001061"/>
</kw>
<msg time="2026-10-20T23:34:32.380398" level="INFO">Repeating keyword, round 261/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.380919" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.380613" elapsed="0.002018"/>
</kw>
<msg time="2026-10-20T23:34:32.382695" level="INFO">Repeating keyword, round 262/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.383215" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.382856" elapsed="0.001057"/>
</kw>
<msg time="2026-10-20T23:34:32.384002" level="INFO">Repeating keyword, round 263/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.384510" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.384172" elapsed="0.001940"/>
</kw>
<msg time="2026-10-20T23:34:32.386179" level="INFO">Repeating keyword, round 264/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.386742" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.386382" elapsed="0.001024"/>
</kw>
<msg time="2026-10-20T23:34:32.387478" level="INFO">Repeating keyword, round 265/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.387969" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.387678" elapsed="0.001997"/>
</kw>
<msg time="2026-10-20T23:34:32.389730" level="INFO">Repeating keyword, round 266/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.390223" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.389892" elapsed="0.001036"/>
</kw>
<msg time="2026-10-20T23:34:32.390982" level="INFO">Repeating keyword, round 267/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.391576" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.391138" elapsed="0.002096"/>
</kw>
<msg time="2026-10-20T23:34:32.393297" level="INFO">Repeating keyword, round 268/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.393862" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.393515" elapsed="0.001064"/>
</kw>
<msg time="2026-10-20T23:34:32.394632" level="INFO">Repeating keyword, round 269/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.395122" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.394832" elapsed="0.001603"/>
</kw>
<msg time="2026-10-20T23:34:32.396503" level="INFO">Repeating keyword, round 270/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.396947" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.396658" elapsed="0.001041"/>
</kw>
<msg time="2026-10-20T23:34:32.397762" level="INFO">Repeating keyword, round 271/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.398297" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.397917" elapsed="0.001205"/>
</kw>
<msg time="2026-10-20T23:34:32.399253" level="INFO">Repeating keyword, round 272/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.400733" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.400348" elapsed="0.001075"/>
</kw>
<msg time="2026-10-20T23:34:32.401492" level="INFO">Repeating keyword, round 273/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.402013" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.401717" elapsed="0.001702"/>
</kw>
<msg time="2026-10-20T23:34:32.403488" level="INFO">Repeating keyword, round 274/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.404094" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.403656" elapsed="0.001149"/>
</kw>
<msg time="2026-10-20T23:34:32.404859" level="INFO">Repeating keyword, round 275/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.405298" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.405012" elapsed="0.001956"/>
</kw>
<msg time="2026-10-20T23:34:32.407032" level="INFO">Repeating keyword, round 276/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.407580" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.407188" elapsed="0.001093"/>
</kw>
<msg time="2026-10-20T23:34:32.408353" level="INFO">Repeating keyword, round 277/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.408826" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.408523" elapsed="0.001899"/>
</kw>
<msg time="2026-10-20T23:34:32.410501" level="INFO">Repeating keyword, round 278/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.411005" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.410658" elapsed="0.001027"/>
</kw>
<msg time="2026-10-20T23:34:32.411748" level="INFO">Repeating keyword, round 279/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.412240" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.411953" elapsed="0.001926"/>
</kw>
<msg time="2026-10-20T23:34:32.413934" level="INFO">Repeating keyword, round 280/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.414494" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.414101" elapsed="0.001064"/>
</kw>
<msg time="2026-10-20T23:34:32.415218" level="INFO">Repeating keyword, round 281/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.415756" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.415395" elapsed="0.002037"/>
</kw>
<msg time="2026-10-20T23:34:32.417505" level="INFO">Repeating keyword, round 282/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.418011" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.417662" elapsed="0.001044"/>
</kw>
<msg time="2026-10-20T23:34:32.418793" level="INFO">Repeating keyword, round 283/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.419260" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.418967" elapsed="0.001923"/>
</kw>
<msg time="2026-10-20T23:34:32.420961" level="INFO">Repeating keyword, round 284/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.421505" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.421116" elapsed="0.001052"/>
</kw>
<msg time="2026-10-20T23:34:32.422255" level="INFO">Repeating keyword, round 285/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.422788" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.422489" elapsed="0.001933"/>
</kw>
<msg time="2026-10-20T23:34:32.424502" level="INFO">Repeating keyword, round 286/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.424999" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.424659" elapsed="0.001132"/>
</kw>
<msg time="2026-10-20T23:34:32.425854" level="INFO">Repeating keyword, round 287/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.426364" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.426023" elapsed="0.001952"/>
</kw>
<msg time="2026-10-20T23:34:32.428050" level="INFO">Repeating keyword, round 288/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.428604" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.428206" elapsed="0.001064"/>
</kw>
<msg time="2026-10-20T23:34:32.429342" level="INFO">Repeating keyword, round 289/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.429843" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.429539" elapsed="0.001883"/>
</kw>
<msg time="2026-10-20T23:34:32.431487" level="INFO">Repeating keyword, round 290/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.431935" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.431644" elapsed="0.001003"/>
</kw>
<msg time="2026-10-20T23:34:32.432700" level="INFO">Repeating keyword, round 291/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.433144" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.432851" elapsed="0.001569"/>
</kw>
<msg time="2026-10-20T23:34:32.434494" level="INFO">Repeating keyword, round 292/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.434940" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.434653" elapsed="0.001055"/>
</kw>
<msg time="2026-10-20T23:34:32.435762" level="INFO">Repeating keyword, round 293/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.436270" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.435917" elapsed="0.001190"/>
</kw>
<msg time="2026-10-20T23:34:32.437162" level="INFO">Repeating keyword, round 294/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.437678" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.437366" elapsed="0.001511"/>
</kw>
<msg time="2026-10-20T23:34:32.438933" level="INFO">Repeating keyword, round 295/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.439521" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.439087" elapsed="0.001203"/>
</kw>
<msg time="2026-10-20T23:34:32.440380" level="INFO">Repeating keyword, round 296/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.440931" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.440553" elapsed="0.001865"/>
</kw>
<msg time="2026-10-20T23:34:32.442486" level="INFO">Repeating keyword, round 297/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.442948" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.442658" elapsed="0.001042"/>
</kw>
<msg time="2026-10-20T23:34:32.443755" level="INFO">Repeating keyword, round 298/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.444247" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.443946" elapsed="0.001286"/>
</kw>
<msg time="2026-10-20T23:34:32.445287" level="INFO">Repeating keyword, round 299/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.445792" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.445496" elapsed="0.001914"/>
</kw>
<msg time="2026-10-20T23:34:32.447479" level="INFO">Repeating keyword, round 300/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.447981" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.447640" elapsed="0.001118"/>
</kw>
<msg time="2026-10-20T23:34:32.448814" level="INFO">Repeating keyword, round 301/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.449267" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.448978" elapsed="0.002006"/>
</kw>
<msg time="2026-10-20T23:34:32.451047" level="INFO">Repeating keyword, round 302/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.451592" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.451208" elapsed="0.001157"/>
</kw>
<msg time="2026-10-20T23:34:32.452431" level="INFO">Repeating keyword, round 303/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.452911" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.452618" elapsed="0.001798"/>
</kw>
<msg time="2026-10-20T23:34:32.454484" level="INFO">Repeating keyword, round 304/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.454941" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.454650" elapsed="0.001027"/>
</kw>
<msg time="2026-10-20T23:34:32.455772" level="INFO">Repeating keyword, round 305/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.456236" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.455935" elapsed="0.002050"/>
</kw>
<msg time="2026-10-20T23:34:32.458038" level="INFO">Repeating keyword, round 306/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.458551" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.458201" elapsed="0.001132"/>
</kw>
<msg time="2026-10-20T23:34:32.459387" level="INFO">Repeating keyword, round 307/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.459957" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.459663" elapsed="0.002381"/>
</kw>
<msg time="2026-10-20T23:34:32.462099" level="INFO">Repeating keyword, round 308/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.462648" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.462265" elapsed="0.001097"/>
</kw>
<msg time="2026-10-20T23:34:32.463417" level="INFO">Repeating keyword, round 309/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.463952" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.463603" elapsed="0.002042"/>
</kw>
<msg time="2026-10-20T23:34:32.465699" level="INFO">Repeating keyword, round 310/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.466203" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.465873" elapsed="0.001838"/>
</kw>
<msg time="2026-10-20T23:34:32.467769" level="INFO">Repeating keyword, round 311/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.468270" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.467941" elapsed="0.001046"/>
</kw>
<msg time="2026-10-20T23:34:32.469080" level="INFO">Repeating keyword, round 312/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.469592" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.469243" elapsed="0.001931"/>
</kw>
<msg time="2026-10-20T23:34:32.471228" level="INFO">Repeating keyword, round 313/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.471735" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.471426" elapsed="0.001086"/>
</kw>
<msg time="2026-10-20T23:34:32.472571" level="INFO">Repeating keyword, round 314/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.473067" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.472768" elapsed="0.001981"/>
</kw>
<msg time="2026-10-20T23:34:32.474802" level="INFO">Repeating keyword, round 315/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.475269" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.474978" elapsed="0.001077"/>
</kw>
<msg time="2026-10-20T23:34:32.476107" level="INFO">Repeating keyword, round 316/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.476656" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.476342" elapsed="0.001946"/>
</kw>
<msg time="2026-10-20T23:34:32.478390" level="INFO">Repeating keyword, round 317/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.478886" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.478560" elapsed="0.001839"/>
</kw>
<msg time="2026-10-20T23:34:32.480474" level="INFO">Repeating keyword, round 318/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.481071" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.480639" elapsed="0.001174"/>
</kw>
<msg time="2026-10-20T23:34:32.481867" level="INFO">Repeating keyword, round 319/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.482368" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.482028" elapsed="0.002086"/>
</kw>
<msg time="2026-10-20T23:34:32.484168" level="INFO">Repeating keyword, round 320/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.484733" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.484370" elapsed="0.001230"/>
</kw>
<msg time="2026-10-20T23:34:32.485659" level="INFO">Repeating keyword, round 321/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.486106" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.485815" elapsed="0.003286"/>
</kw>
<msg time="2026-10-20T23:34:32.489154" level="INFO">Repeating keyword, round 322/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.489698" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.489352" elapsed="0.001056"/>
</kw>
<msg time="2026-10-20T23:34:32.490474" level="INFO">Repeating keyword, round 323/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.490968" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.490665" elapsed="0.001410"/>
</kw>
<msg time="2026-10-20T23:34:32.492139" level="INFO">Repeating keyword, round 324/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.492699" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.492340" elapsed="0.001136"/>
</kw>
<msg time="2026-10-20T23:34:32.493590" level="INFO">Repeating keyword, round 325/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.494038" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.493746" elapsed="0.002863"/>
</kw>
<msg time="2026-10-20T23:34:32.496664" level="INFO">Repeating keyword, round 326/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.497165" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.496858" elapsed="0.001930"/>
</kw>
<msg time="2026-10-20T23:34:32.498843" level="INFO">Repeating keyword, round 327/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.499297" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.499007" elapsed="0.001294"/>
</kw>
<msg time="2026-10-20T23:34:32.500397" level="INFO">Repeating keyword, round 328/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.500867" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.500577" elapsed="0.001520"/>
</kw>
<msg time="2026-10-20T23:34:32.502162" level="INFO">Repeating keyword, round 329/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.502681" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.502353" elapsed="0.002080"/>
</kw>
<msg time="2026-10-20T23:34:32.504508" level="INFO">Repeating keyword, round 330/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.504992" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.504665" elapsed="0.003018"/>
</kw>
<msg time="2026-10-20T23:34:32.507809" level="INFO">Repeating keyword, round 331/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.508959" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.508231" elapsed="0.001572"/>
</kw>
<msg time="2026-10-20T23:34:32.509858" level="INFO">Repeating keyword, round 332/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.510337" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.510021" elapsed="0.002047"/>
</kw>
<msg time="2026-10-20T23:34:32.512133" level="INFO">Repeating keyword, round 333/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.512676" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.512291" elapsed="0.001137"/>
</kw>
<msg time="2026-10-20T23:34:32.513499" level="INFO">Repeating keyword, round 334/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.513954" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.513662" elapsed="0.001959"/>
</kw>
<msg time="2026-10-20T23:34:32.515684" level="INFO">Repeating keyword, round 335/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.516176" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.515840" elapsed="0.001145"/>
</kw>
<msg time="2026-10-20T23:34:32.517047" level="INFO">Repeating keyword, round 336/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.517547" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.517202" elapsed="0.001404"/>
</kw>
<msg time="2026-10-20T23:34:32.518721" level="INFO">Repeating keyword, round 337/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.519587" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.519017" elapsed="0.001674"/>
</kw>
<msg time="2026-10-20T23:34:32.520795" level="INFO">Repeating keyword, round 338/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.521559" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.521062" elapsed="0.002502"/>
</kw>
<msg time="2026-10-20T23:34:32.523628" level="INFO">Repeating keyword, round 339/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.524155" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.523783" elapsed="0.001953"/>
</kw>
<msg time="2026-10-20T23:34:32.525805" level="INFO">Repeating keyword, round 340/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.526667" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.525981" elapsed="0.001448"/>
</kw>
<msg time="2026-10-20T23:34:32.527501" level="INFO">Repeating keyword, round 341/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.527944" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.527657" elapsed="0.001949"/>
</kw>
<msg time="2026-10-20T23:34:32.529668" level="INFO">Repeating keyword, round 342/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.530159" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.529823" elapsed="0.001164"/>
</kw>
<msg time="2026-10-20T23:34:32.531041" level="INFO">Repeating keyword, round 343/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.531526" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.531195" elapsed="0.001968"/>
</kw>
<msg time="2026-10-20T23:34:32.533217" level="INFO">Repeating keyword, round 344/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.533764" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.533421" elapsed="0.001294"/>
</kw>
<msg time="2026-10-20T23:34:32.534770" level="INFO">Repeating keyword, round 345/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.535212" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.534924" elapsed="0.001966"/>
</kw>
<msg time="2026-10-20T23:34:32.536954" level="INFO">Repeating keyword, round 346/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.537499" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.537111" elapsed="0.001128"/>
</kw>
<msg time="2026-10-20T23:34:32.538294" level="INFO">Repeating keyword, round 347/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.538836" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.538506" elapsed="0.002014"/>
</kw>
<msg time="2026-10-20T23:34:32.540583" level="INFO">Repeating keyword, round 348/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.541075" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.540737" elapsed="0.001127"/>
</kw>
<msg time="2026-10-20T23:34:32.541950" level="INFO">Repeating keyword, round 349/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.542433" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.542114" elapsed="0.001531"/>
</kw>
<msg time="2026-10-20T23:34:32.543770" level="INFO">Repeating keyword, round 350/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.544732" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.544075" elapsed="0.001607"/>
</kw>
<msg time="2026-10-20T23:34:32.545738" level="INFO">Repeating keyword, round 351/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.546203" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.545897" elapsed="0.002096"/>
</kw>
<msg time="2026-10-20T23:34:32.548060" level="INFO">Repeating keyword, round 352/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.548620" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.548232" elapsed="0.001139"/>
</kw>
<msg time="2026-10-20T23:34:32.549458" level="INFO">Repeating keyword, round 353/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.549932" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.549638" elapsed="0.001622"/>
</kw>
<msg time="2026-10-20T23:34:32.551389" level="INFO">Repeating keyword, round 354/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.552200" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.551679" elapsed="0.001371"/>
</kw>
<msg time="2026-10-20T23:34:32.553102" level="INFO">Repeating keyword, round 355/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.553599" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.553257" elapsed="0.001968"/>
</kw>
<msg time="2026-10-20T23:34:32.555293" level="INFO">Repeating keyword, round 356/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.555821" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.555488" elapsed="0.001110"/>
</kw>
<msg time="2026-10-20T23:34:32.556651" level="INFO">Repeating keyword, round 357/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.557134" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.556845" elapsed="0.002007"/>
</kw>
<msg time="2026-10-20T23:34:32.558920" level="INFO">Repeating keyword, round 358/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.559393" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.559073" elapsed="0.001113"/>
</kw>
<msg time="2026-10-20T23:34:32.560238" level="INFO">Repeating keyword, round 359/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.560758" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.560450" elapsed="0.002073"/>
</kw>
<msg time="2026-10-20T23:34:32.562585" level="INFO">Repeating keyword, round 360/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.563139" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.562802" elapsed="0.001917"/>
</kw>
<msg time="2026-10-20T23:34:32.564782" level="INFO">Repeating keyword, round 361/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.565275" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.564939" elapsed="0.001121"/>
</kw>
<msg time="2026-10-20T23:34:32.566149" level="INFO">Repeating keyword, round 362/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.566796" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.566347" elapsed="0.001613"/>
</kw>
<msg time="2026-10-20T23:34:32.568074" level="INFO">Repeating keyword, round 363/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.568923" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.568371" elapsed="0.001397"/>
</kw>
<msg time="2026-10-20T23:34:32.569823" level="INFO">Repeating keyword, round 364/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.570272" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.569980" elapsed="0.001982"/>
</kw>
<msg time="2026-10-20T23:34:32.572018" level="INFO">Repeating keyword, round 365/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.572563" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.572187" elapsed="0.001175"/>
</kw>
<msg time="2026-10-20T23:34:32.573450" level="INFO">Repeating keyword, round 366/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.573940" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.573634" elapsed="0.002068"/>
</kw>
<msg time="2026-10-20T23:34:32.575770" level="INFO">Repeating keyword, round 367/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.576274" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.575928" elapsed="0.001098"/>
</kw>
<msg time="2026-10-20T23:34:32.577079" level="INFO">Repeating keyword, round 368/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.577585" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.577251" elapsed="0.001325"/>
</kw>
<msg time="2026-10-20T23:34:32.578690" level="INFO">Repeating keyword, round 369/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.579508" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.578963" elapsed="0.001380"/>
</kw>
<msg time="2026-10-20T23:34:32.580398" level="INFO">Repeating keyword, round 370/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.580857" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.580569" elapsed="0.002129"/>
</kw>
<msg time="2026-10-20T23:34:32.582761" level="INFO">Repeating keyword, round 371/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.583244" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.582915" elapsed="0.001117"/>
</kw>
<msg time="2026-10-20T23:34:32.584083" level="INFO">Repeating keyword, round 372/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.584572" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.584241" elapsed="0.001984"/>
</kw>
<msg time="2026-10-20T23:34:32.586293" level="INFO">Repeating keyword, round 373/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.586824" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.586485" elapsed="0.001139"/>
</kw>
<msg time="2026-10-20T23:34:32.587683" level="INFO">Repeating keyword, round 374/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.588126" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.587836" elapsed="0.001945"/>
</kw>
<msg time="2026-10-20T23:34:32.589844" level="INFO">Repeating keyword, round 375/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.590499" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.589999" elapsed="0.002241"/>
</kw>
<msg time="2026-10-20T23:34:32.592329" level="INFO">Repeating keyword, round 376/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.592861" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.592504" elapsed="0.001169"/>
</kw>
<msg time="2026-10-20T23:34:32.593726" level="INFO">Repeating keyword, round 377/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.594165" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.593879" elapsed="0.002008"/>
</kw>
<msg time="2026-10-20T23:34:32.596020" level="INFO">Repeating keyword, round 378/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.596560" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.596178" elapsed="0.001180"/>
</kw>
<msg time="2026-10-20T23:34:32.597420" level="INFO">Repeating keyword, round 379/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.597887" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.597594" elapsed="0.001829"/>
</kw>
<msg time="2026-10-20T23:34:32.599492" level="INFO">Repeating keyword, round 380/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.599935" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.599646" elapsed="0.001294"/>
</kw>
<msg time="2026-10-20T23:34:32.600995" level="INFO">Repeating keyword, round 381/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.601503" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.601156" elapsed="0.002058"/>
</kw>
<msg time="2026-10-20T23:34:32.603278" level="INFO">Repeating keyword, round 382/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.603825" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.603497" elapsed="0.001064"/>
</kw>
<msg time="2026-10-20T23:34:32.604616" level="INFO">Repeating keyword, round 383/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.605100" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.604772" elapsed="0.002119"/>
</kw>
<msg time="2026-10-20T23:34:32.606955" level="INFO">Repeating keyword, round 384/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.609415" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.607108" elapsed="0.003065"/>
</kw>
<msg time="2026-10-20T23:34:32.610226" level="INFO">Repeating keyword, round 385/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.610727" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.610420" elapsed="0.002015"/>
</kw>
<msg time="2026-10-20T23:34:32.612514" level="INFO">Repeating keyword, round 386/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.612990" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.612667" elapsed="0.001229"/>
</kw>
<msg time="2026-10-20T23:34:32.613958" level="INFO">Repeating keyword, round 387/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.614526" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.614169" elapsed="0.001438"/>
</kw>
<msg time="2026-10-20T23:34:32.615709" level="INFO">Repeating keyword, round 388/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.616499" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.615977" elapsed="0.002459"/>
</kw>
<msg time="2026-10-20T23:34:32.618516" level="INFO">Repeating keyword, round 389/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.619026" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.618678" elapsed="0.001286"/>
</kw>
<msg time="2026-10-20T23:34:32.620030" level="INFO">Repeating keyword, round 390/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.620513" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.620188" elapsed="0.001440"/>
</kw>
<msg time="2026-10-20T23:34:32.621691" level="INFO">Repeating keyword, round 391/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.622191" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.621848" elapsed="0.001237"/>
</kw>
<msg time="2026-10-20T23:34:32.623169" level="INFO">Repeating keyword, round 392/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.623683" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.623374" elapsed="0.002225"/>
</kw>
<msg time="2026-10-20T23:34:32.625652" level="INFO">Repeating keyword, round 393/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.626108" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.625817" elapsed="0.001851"/>
</kw>
<msg time="2026-10-20T23:34:32.627731" level="INFO">Repeating keyword, round 394/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.628229" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.627888" elapsed="0.001172"/>
</kw>
<msg time="2026-10-20T23:34:32.629111" level="INFO">Repeating keyword, round 395/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.629622" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.629272" elapsed="0.002013"/>
</kw>
<msg time="2026-10-20T23:34:32.631386" level="INFO">Repeating keyword, round 396/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.631893" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.631558" elapsed="0.001262"/>
</kw>
<msg time="2026-10-20T23:34:32.632882" level="INFO">Repeating keyword, round 397/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.633351" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.633039" elapsed="0.001926"/>
</kw>
<msg time="2026-10-20T23:34:32.635029" level="INFO">Repeating keyword, round 398/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.635569" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.635186" elapsed="0.001345"/>
</kw>
<msg time="2026-10-20T23:34:32.636585" level="INFO">Repeating keyword, round 399/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.637030" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.636739" elapsed="0.001407"/>
</kw>
<msg time="2026-10-20T23:34:32.638218" level="INFO">Repeating keyword, round 400/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.638779" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.638394" elapsed="0.002188"/>
</kw>
<msg time="2026-10-20T23:34:32.640689" level="INFO">Repeating keyword, round 401/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.641451" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.640957" elapsed="0.001314"/>
</kw>
<msg time="2026-10-20T23:34:32.642346" level="INFO">Repeating keyword, round 402/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.642809" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.642515" elapsed="0.002043"/>
</kw>
<msg time="2026-10-20T23:34:32.644620" level="INFO">Repeating keyword, round 403/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.645073" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.644778" elapsed="0.001154"/>
</kw>
<msg time="2026-10-20T23:34:32.645987" level="INFO">Repeating keyword, round 404/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.646629" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.646186" elapsed="0.002094"/>
</kw>
<msg time="2026-10-20T23:34:32.648358" level="INFO">Repeating keyword, round 405/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.648907" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.648529" elapsed="0.001195"/>
</kw>
<msg time="2026-10-20T23:34:32.649777" level="INFO">Repeating keyword, round 406/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.650490" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.649932" elapsed="0.001339"/>
</kw>
<msg time="2026-10-20T23:34:32.651345" level="INFO">Repeating keyword, round 407/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.651802" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.651514" elapsed="0.002031"/>
</kw>
<msg time="2026-10-20T23:34:32.653598" level="INFO">Repeating keyword, round 408/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.654074" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.653751" elapsed="0.001143"/>
</kw>
<msg time="2026-10-20T23:34:32.654946" level="INFO">Repeating keyword, round 409/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.655483" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.655141" elapsed="0.001993"/>
</kw>
<msg time="2026-10-20T23:34:32.657195" level="INFO">Repeating keyword, round 410/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.657760" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.657365" elapsed="0.001203"/>
</kw>
<msg time="2026-10-20T23:34:32.658620" level="INFO">Repeating keyword, round 411/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.659121" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.658820" elapsed="0.002050"/>
</kw>
<msg time="2026-10-20T23:34:32.660923" level="INFO">Repeating keyword, round 412/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.661450" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.661080" elapsed="0.001159"/>
</kw>
<msg time="2026-10-20T23:34:32.662304" level="INFO">Repeating keyword, round 413/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.662868" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.662578" elapsed="0.002001"/>
</kw>
<msg time="2026-10-20T23:34:32.664633" level="INFO">Repeating keyword, round 414/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.665074" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.664787" elapsed="0.001844"/>
</kw>
<msg time="2026-10-20T23:34:32.666687" level="INFO">Repeating keyword, round 415/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.667151" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.666849" elapsed="0.002100"/>
</kw>
<msg time="2026-10-20T23:34:32.669007" level="INFO">Repeating keyword, round 416/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.669525" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.669162" elapsed="0.001130"/>
</kw>
<msg time="2026-10-20T23:34:32.670380" level="INFO">Repeating keyword, round 417/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.670891" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.670591" elapsed="0.001827"/>
</kw>
<msg time="2026-10-20T23:34:32.672488" level="INFO">Repeating keyword, round 418/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.672935" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.672644" elapsed="0.001756"/>
</kw>
<msg time="2026-10-20T23:34:32.674455" level="INFO">Repeating keyword, round 419/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.674959" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.674624" elapsed="0.001160"/>
</kw>
<msg time="2026-10-20T23:34:32.675844" level="INFO">Repeating keyword, round 420/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.676290" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.676001" elapsed="0.000906"/>
</kw>
<msg time="2026-10-20T23:34:32.676959" level="INFO">Repeating keyword, round 421/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.677442" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.677112" elapsed="0.001956"/>
</kw>
<msg time="2026-10-20T23:34:32.679131" level="INFO">Repeating keyword, round 422/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.679669" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.679285" elapsed="0.001248"/>
</kw>
<msg time="2026-10-20T23:34:32.680588" level="INFO">Repeating keyword, round 423/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.681054" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.680740" elapsed="0.001996"/>
</kw>
<msg time="2026-10-20T23:34:32.682800" level="INFO">Repeating keyword, round 424/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.683289" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.682954" elapsed="0.001131"/>
</kw>
<msg time="2026-10-20T23:34:32.684168" level="INFO">Repeating keyword, round 425/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.684661" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.684356" elapsed="0.001943"/>
</kw>
<msg time="2026-10-20T23:34:32.686399" level="INFO">Repeating keyword, round 426/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.686902" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.686566" elapsed="0.001146"/>
</kw>
<msg time="2026-10-20T23:34:32.687764" level="INFO">Repeating keyword, round 427/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.688220" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.687917" elapsed="0.001970"/>
</kw>
<msg time="2026-10-20T23:34:32.689948" level="INFO">Repeating keyword, round 428/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.690617" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.690102" elapsed="0.001317"/>
</kw>
<msg time="2026-10-20T23:34:32.691489" level="INFO">Repeating keyword, round 429/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.691929" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.691642" elapsed="0.001775"/>
</kw>
<msg time="2026-10-20T23:34:32.693482" level="INFO">Repeating keyword, round 430/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.693925" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.693637" elapsed="0.001125"/>
</kw>
<msg time="2026-10-20T23:34:32.694915" level="INFO">Repeating keyword, round 431/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.695439" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.695078" elapsed="0.001356"/>
</kw>
<msg time="2026-10-20T23:34:32.696499" level="INFO">Repeating keyword, round 432/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.696937" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.696652" elapsed="0.001897"/>
</kw>
<msg time="2026-10-20T23:34:32.698612" level="INFO">Repeating keyword, round 433/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.699123" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.698777" elapsed="0.001185"/>
</kw>
<msg time="2026-10-20T23:34:32.700016" level="INFO">Repeating keyword, round 434/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.700545" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.700169" elapsed="0.001999"/>
</kw>
<msg time="2026-10-20T23:34:32.702224" level="INFO">Repeating keyword, round 435/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.702768" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.702415" elapsed="0.001155"/>
</kw>
<msg time="2026-10-20T23:34:32.703624" level="INFO">Repeating keyword, round 436/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.704064" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.703779" elapsed="0.001646"/>
</kw>
<msg time="2026-10-20T23:34:32.705497" level="INFO">Repeating keyword, round 437/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.705939" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.705651" elapsed="0.001773"/>
</kw>
<msg time="2026-10-20T23:34:32.707495" level="INFO">Repeating keyword, round 438/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.707980" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.707647" elapsed="0.001782"/>
</kw>
<msg time="2026-10-20T23:34:32.709502" level="INFO">Repeating keyword, round 439/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.709990" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.709695" elapsed="0.001112"/>
</kw>
<msg time="2026-10-20T23:34:32.710871" level="INFO">Repeating keyword, round 440/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.711452" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.711092" elapsed="0.001461"/>
</kw>
<msg time="2026-10-20T23:34:32.712606" level="INFO">Repeating keyword, round 441/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.713045" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.712759" elapsed="0.001972"/>
</kw>
<msg time="2026-10-20T23:34:32.714794" level="INFO">Repeating keyword, round 442/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.715274" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.714948" elapsed="0.001097"/>
</kw>
<msg time="2026-10-20T23:34:32.716102" level="INFO">Repeating keyword, round 443/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.716598" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.716256" elapsed="0.001955"/>
</kw>
<msg time="2026-10-20T23:34:32.718273" level="INFO">Repeating keyword, round 444/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.718805" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.718456" elapsed="0.001137"/>
</kw>
<msg time="2026-10-20T23:34:32.719645" level="INFO">Repeating keyword, round 445/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.720184" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.719849" elapsed="0.002079"/>
</kw>
<msg time="2026-10-20T23:34:32.721990" level="INFO">Repeating keyword, round 446/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.722588" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.722143" elapsed="0.001157"/>
</kw>
<msg time="2026-10-20T23:34:32.723371" level="INFO">Repeating keyword, round 447/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.723840" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.723537" elapsed="0.002059"/>
</kw>
<msg time="2026-10-20T23:34:32.725657" level="INFO">Repeating keyword, round 448/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.726146" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.725811" elapsed="0.002106"/>
</kw>
<msg time="2026-10-20T23:34:32.727979" level="INFO">Repeating keyword, round 449/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.728499" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.728132" elapsed="0.001123"/>
</kw>
<msg time="2026-10-20T23:34:32.729382" level="INFO">Repeating keyword, round 450/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.729962" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.729553" elapsed="0.001868"/>
</kw>
<msg time="2026-10-20T23:34:32.731490" level="INFO">Repeating keyword, round 451/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.731938" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.731648" elapsed="0.001020"/>
</kw>
<msg time="2026-10-20T23:34:32.732721" level="INFO">Repeating keyword, round 452/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.733225" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.732873" elapsed="0.001044"/>
</kw>
<msg time="2026-10-20T23:34:32.733970" level="INFO">Repeating keyword, round 453/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.734498" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.734121" elapsed="0.002016"/>
</kw>
<msg time="2026-10-20T23:34:32.736201" level="INFO">Repeating keyword, round 454/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.736758" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.736405" elapsed="0.001174"/>
</kw>
<msg time="2026-10-20T23:34:32.737632" level="INFO">Repeating keyword, round 455/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.738067" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.737783" elapsed="0.002004"/>
</kw>
<msg time="2026-10-20T23:34:32.739851" level="INFO">Repeating keyword, round 456/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.740364" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.740005" elapsed="0.001172"/>
</kw>
<msg time="2026-10-20T23:34:32.741238" level="INFO">Repeating keyword, round 457/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.741734" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.741428" elapsed="0.002002"/>
</kw>
<msg time="2026-10-20T23:34:32.743499" level="INFO">Repeating keyword, round 458/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.743995" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.743653" elapsed="0.002123"/>
</kw>
<msg time="2026-10-20T23:34:32.745831" level="INFO">Repeating keyword, round 459/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.746413" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.745996" elapsed="0.002237"/>
</kw>
<msg time="2026-10-20T23:34:32.748289" level="INFO">Repeating keyword, round 460/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.748828" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.748484" elapsed="0.001178"/>
</kw>
<msg time="2026-10-20T23:34:32.749749" level="INFO">Repeating keyword, round 461/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.750206" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.749913" elapsed="0.002503"/>
</kw>
<msg time="2026-10-20T23:34:32.752495" level="INFO">Repeating keyword, round 462/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.752986" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.752664" elapsed="0.001193"/>
</kw>
<msg time="2026-10-20T23:34:32.753919" level="INFO">Repeating keyword, round 463/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.754390" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.754072" elapsed="0.002111"/>
</kw>
<msg time="2026-10-20T23:34:32.756264" level="INFO">Repeating keyword, round 464/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.756802" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.756440" elapsed="0.001151"/>
</kw>
<msg time="2026-10-20T23:34:32.757643" level="INFO">Repeating keyword, round 465/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.758088" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.757798" elapsed="0.001994"/>
</kw>
<msg time="2026-10-20T23:34:32.759851" level="INFO">Repeating keyword, round 466/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.760467" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.760095" elapsed="0.002109"/>
</kw>
<msg time="2026-10-20T23:34:32.762268" level="INFO">Repeating keyword, round 467/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.762798" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.762445" elapsed="0.001264"/>
</kw>
<msg time="2026-10-20T23:34:32.763761" level="INFO">Repeating keyword, round 468/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.764199" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.763913" elapsed="0.001992"/>
</kw>
<msg time="2026-10-20T23:34:32.765970" level="INFO">Repeating keyword, round 469/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.766485" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.766125" elapsed="0.001254"/>
</kw>
<msg time="2026-10-20T23:34:32.767432" level="INFO">Repeating keyword, round 470/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.767884" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.767600" elapsed="0.001916"/>
</kw>
<msg time="2026-10-20T23:34:32.769583" level="INFO">Repeating keyword, round 471/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.770070" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.769737" elapsed="0.001284"/>
</kw>
<msg time="2026-10-20T23:34:32.771074" level="INFO">Repeating keyword, round 472/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.771707" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.771242" elapsed="0.002025"/>
</kw>
<msg time="2026-10-20T23:34:32.773361" level="INFO">Repeating keyword, round 473/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.773881" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.773532" elapsed="0.002161"/>
</kw>
<msg time="2026-10-20T23:34:32.775756" level="INFO">Repeating keyword, round 474/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.776247" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.775910" elapsed="0.002158"/>
</kw>
<msg time="2026-10-20T23:34:32.778132" level="INFO">Repeating keyword, round 475/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.778665" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.778291" elapsed="0.002453"/>
</kw>
<msg time="2026-10-20T23:34:32.780809" level="INFO">Repeating keyword, round 476/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.781386" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.780982" elapsed="0.001274"/>
</kw>
<msg time="2026-10-20T23:34:32.782332" level="INFO">Repeating keyword, round 477/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.782788" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.782499" elapsed="0.001882"/>
</kw>
<msg time="2026-10-20T23:34:32.784442" level="INFO">Repeating keyword, round 478/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.784946" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.784619" elapsed="0.001297"/>
</kw>
<msg time="2026-10-20T23:34:32.785971" level="INFO">Repeating keyword, round 479/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.786452" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.786139" elapsed="0.001899"/>
</kw>
<msg time="2026-10-20T23:34:32.788090" level="INFO">Repeating keyword, round 480/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.788571" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.788241" elapsed="0.001938"/>
</kw>
<msg time="2026-10-20T23:34:32.790240" level="INFO">Repeating keyword, round 481/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.790765" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.790416" elapsed="0.001273"/>
</kw>
<msg time="2026-10-20T23:34:32.791740" level="INFO">Repeating keyword, round 482/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.792216" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.791930" elapsed="0.001958"/>
</kw>
<msg time="2026-10-20T23:34:32.793949" level="INFO">Repeating keyword, round 483/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.794574" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.794102" elapsed="0.001408"/>
</kw>
<msg time="2026-10-20T23:34:32.795640" level="INFO">Repeating keyword, round 484/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.796102" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.795792" elapsed="0.001985"/>
</kw>
<msg time="2026-10-20T23:34:32.797839" level="INFO">Repeating keyword, round 485/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.798347" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.797992" elapsed="0.002133"/>
</kw>
<msg time="2026-10-20T23:34:32.800189" level="INFO">Repeating keyword, round 486/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.800727" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.800364" elapsed="0.001249"/>
</kw>
<msg time="2026-10-20T23:34:32.801666" level="INFO">Repeating keyword, round 487/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.802111" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.801823" elapsed="0.001918"/>
</kw>
<msg time="2026-10-20T23:34:32.803804" level="INFO">Repeating keyword, round 488/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.804287" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.803954" elapsed="0.001795"/>
</kw>
<msg time="2026-10-20T23:34:32.805812" level="INFO">Repeating keyword, round 489/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.806297" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.805966" elapsed="0.002178"/>
</kw>
<msg time="2026-10-20T23:34:32.808199" level="INFO">Repeating keyword, round 490/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.808867" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.808375" elapsed="0.001426"/>
</kw>
<msg time="2026-10-20T23:34:32.809854" level="INFO">Repeating keyword, round 491/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.810295" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.810007" elapsed="0.001976"/>
</kw>
<msg time="2026-10-20T23:34:32.812047" level="INFO">Repeating keyword, round 492/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.812561" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.812199" elapsed="0.001326"/>
</kw>
<msg time="2026-10-20T23:34:32.813576" level="INFO">Repeating keyword, round 493/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.814017" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.813730" elapsed="0.001922"/>
</kw>
<msg time="2026-10-20T23:34:32.815714" level="INFO">Repeating keyword, round 494/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.816334" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.815867" elapsed="0.002304"/>
</kw>
<msg time="2026-10-20T23:34:32.818235" level="INFO">Repeating keyword, round 495/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.818794" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.818418" elapsed="0.001331"/>
</kw>
<msg time="2026-10-20T23:34:32.819806" level="INFO">Repeating keyword, round 496/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.820244" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.819958" elapsed="0.002588"/>
</kw>
<msg time="2026-10-20T23:34:32.822626" level="INFO">Repeating keyword, round 497/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.823202" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.822828" elapsed="0.002012"/>
</kw>
<msg time="2026-10-20T23:34:32.825061" level="INFO">Repeating keyword, round 498/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.826554" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.825639" elapsed="0.002052"/>
</kw>
<msg time="2026-10-20T23:34:32.827763" level="INFO">Repeating keyword, round 499/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.828433" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.827982" elapsed="0.003065"/>
</kw>
<msg time="2026-10-20T23:34:32.831139" level="INFO">Repeating keyword, round 500/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.831833" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.831393" elapsed="0.001494"/>
</kw>
<msg time="2026-10-20T23:34:32.832961" level="INFO">Repeating keyword, round 501/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.833685" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.833180" elapsed="0.003182"/>
</kw>
<msg time="2026-10-20T23:34:32.836438" level="INFO">Repeating keyword, round 502/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.837148" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.836681" elapsed="0.001452"/>
</kw>
<msg time="2026-10-20T23:34:32.838208" level="INFO">Repeating keyword, round 503/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.838886" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.838464" elapsed="0.002976"/>
</kw>
<msg time="2026-10-20T23:34:32.841533" level="INFO">Repeating keyword, round 504/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.842156" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.841751" elapsed="0.001385"/>
</kw>
<msg time="2026-10-20T23:34:32.843208" level="INFO">Repeating keyword, round 505/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.843871" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.843450" elapsed="0.002710"/>
</kw>
<msg time="2026-10-20T23:34:32.846236" level="INFO">Repeating keyword, round 506/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.847001" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.846568" elapsed="0.001477"/>
</kw>
<msg time="2026-10-20T23:34:32.848122" level="INFO">Repeating keyword, round 507/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.848806" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.848372" elapsed="0.003010"/>
</kw>
<msg time="2026-10-20T23:34:32.851461" level="INFO">Repeating keyword, round 508/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.852166" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.851698" elapsed="0.001811"/>
</kw>
<msg time="2026-10-20T23:34:32.853585" level="INFO">Repeating keyword, round 509/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.854223" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.853813" elapsed="0.002009"/>
</kw>
<msg time="2026-10-20T23:34:32.855901" level="INFO">Repeating keyword, round 510/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.856700" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.856118" elapsed="0.002982"/>
</kw>
<msg time="2026-10-20T23:34:32.859164" level="INFO">Repeating keyword, round 511/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.859701" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.859343" elapsed="0.001234"/>
</kw>
<msg time="2026-10-20T23:34:32.860633" level="INFO">Repeating keyword, round 512/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.861076" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.860788" elapsed="0.001042"/>
</kw>
<msg time="2026-10-20T23:34:32.861883" level="INFO">Repeating keyword, round 513/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.862366" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.862036" elapsed="0.002023"/>
</kw>
<msg time="2026-10-20T23:34:32.864120" level="INFO">Repeating keyword, round 514/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.864652" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.864275" elapsed="0.001220"/>
</kw>
<msg time="2026-10-20T23:34:32.865555" level="INFO">Repeating keyword, round 515/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.865998" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.865714" elapsed="0.002099"/>
</kw>
<msg time="2026-10-20T23:34:32.867873" level="INFO">Repeating keyword, round 516/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.868508" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.868026" elapsed="0.001388"/>
</kw>
<msg time="2026-10-20T23:34:32.869468" level="INFO">Repeating keyword, round 517/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.869926" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.869641" elapsed="0.001773"/>
</kw>
<msg time="2026-10-20T23:34:32.871466" level="INFO">Repeating keyword, round 518/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.871927" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.871638" elapsed="0.001778"/>
</kw>
<msg time="2026-10-20T23:34:32.873491" level="INFO">Repeating keyword, round 519/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.873977" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.873687" elapsed="0.001183"/>
</kw>
<msg time="2026-10-20T23:34:32.874929" level="INFO">Repeating keyword, round 520/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.875387" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.875083" elapsed="0.001055"/>
</kw>
<msg time="2026-10-20T23:34:32.876191" level="INFO">Repeating keyword, round 521/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.876701" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.876393" elapsed="0.002074"/>
</kw>
<msg time="2026-10-20T23:34:32.878534" level="INFO">Repeating keyword, round 522/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.879021" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.878692" elapsed="0.001204"/>
</kw>
<msg time="2026-10-20T23:34:32.879950" level="INFO">Repeating keyword, round 523/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.880455" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.880103" elapsed="0.002115"/>
</kw>
<msg time="2026-10-20T23:34:32.882272" level="INFO">Repeating keyword, round 524/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.882798" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.882452" elapsed="0.001281"/>
</kw>
<msg time="2026-10-20T23:34:32.883786" level="INFO">Repeating keyword, round 525/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.884236" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.883938" elapsed="0.001497"/>
</kw>
<msg time="2026-10-20T23:34:32.885504" level="INFO">Repeating keyword, round 526/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.885945" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.885659" elapsed="0.002074"/>
</kw>
<msg time="2026-10-20T23:34:32.887787" level="INFO">Repeating keyword, round 527/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.888274" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.887941" elapsed="0.001228"/>
</kw>
<msg time="2026-10-20T23:34:32.889222" level="INFO">Repeating keyword, round 528/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.889744" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.889414" elapsed="0.001999"/>
</kw>
<msg time="2026-10-20T23:34:32.891467" level="INFO">Repeating keyword, round 529/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.891924" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.891638" elapsed="0.001142"/>
</kw>
<msg time="2026-10-20T23:34:32.892867" level="INFO">Repeating keyword, round 530/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.893389" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.893028" elapsed="0.001783"/>
</kw>
<msg time="2026-10-20T23:34:32.894986" level="INFO">Repeating keyword, round 531/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.896118" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.895415" elapsed="0.001757"/>
</kw>
<msg time="2026-10-20T23:34:32.897223" level="INFO">Repeating keyword, round 532/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.898278" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.897407" elapsed="0.003094"/>
</kw>
<msg time="2026-10-20T23:34:32.900557" level="INFO">Repeating keyword, round 533/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.901075" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.900728" elapsed="0.001297"/>
</kw>
<msg time="2026-10-20T23:34:32.902075" level="INFO">Repeating keyword, round 534/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.902569" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.902228" elapsed="0.002526"/>
</kw>
<msg time="2026-10-20T23:34:32.904822" level="INFO">Repeating keyword, round 535/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.905393" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.904990" elapsed="0.001819"/>
</kw>
<msg time="2026-10-20T23:34:32.906862" level="INFO">Repeating keyword, round 536/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.907411" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.907020" elapsed="0.002574"/>
</kw>
<msg time="2026-10-20T23:34:32.909765" level="INFO">Repeating keyword, round 537/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.910216" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.909922" elapsed="0.001049"/>
</kw>
<msg time="2026-10-20T23:34:32.911024" level="INFO">Repeating keyword, round 538/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.911751" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.911178" elapsed="0.002640"/>
</kw>
<msg time="2026-10-20T23:34:32.913883" level="INFO">Repeating keyword, round 539/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.914495" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.914117" elapsed="0.001319"/>
</kw>
<msg time="2026-10-20T23:34:32.915505" level="INFO">Repeating keyword, round 540/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.915947" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.915659" elapsed="0.002124"/>
</kw>
<msg time="2026-10-20T23:34:32.917849" level="INFO">Repeating keyword, round 541/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.918378" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.918009" elapsed="0.001283"/>
</kw>
<msg time="2026-10-20T23:34:32.919379" level="INFO">Repeating keyword, round 542/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.919865" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.919556" elapsed="0.002126"/>
</kw>
<msg time="2026-10-20T23:34:32.921739" level="INFO">Repeating keyword, round 543/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.922230" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.921894" elapsed="0.001243"/>
</kw>
<msg time="2026-10-20T23:34:32.923192" level="INFO">Repeating keyword, round 544/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.923663" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.923363" elapsed="0.002026"/>
</kw>
<msg time="2026-10-20T23:34:32.925444" level="INFO">Repeating keyword, round 545/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.925946" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.925611" elapsed="0.001505"/>
</kw>
<msg time="2026-10-20T23:34:32.927169" level="INFO">Repeating keyword, round 546/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.927724" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.927356" elapsed="0.001882"/>
</kw>
<msg time="2026-10-20T23:34:32.929292" level="INFO">Repeating keyword, round 547/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.929849" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.929510" elapsed="0.002477"/>
</kw>
<msg time="2026-10-20T23:34:32.932044" level="INFO">Repeating keyword, round 548/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.932573" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.932199" elapsed="0.001289"/>
</kw>
<msg time="2026-10-20T23:34:32.933548" level="INFO">Repeating keyword, round 549/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.933992" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.933704" elapsed="0.002041"/>
</kw>
<msg time="2026-10-20T23:34:32.935807" level="INFO">Repeating keyword, round 550/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.936249" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.935962" elapsed="0.001223"/>
</kw>
<msg time="2026-10-20T23:34:32.937237" level="INFO">Repeating keyword, round 551/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.937770" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.937463" elapsed="0.002139"/>
</kw>
<msg time="2026-10-20T23:34:32.939665" level="INFO">Repeating keyword, round 552/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.940164" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.939819" elapsed="0.001281"/>
</kw>
<msg time="2026-10-20T23:34:32.941166" level="INFO">Repeating keyword, round 553/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.941652" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.941343" elapsed="0.002417"/>
</kw>
<msg time="2026-10-20T23:34:32.943824" level="INFO">Repeating keyword, round 554/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.944373" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.944014" elapsed="0.001194"/>
</kw>
<msg time="2026-10-20T23:34:32.945270" level="INFO">Repeating keyword, round 555/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.945750" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.945450" elapsed="0.001843"/>
</kw>
<msg time="2026-10-20T23:34:32.947362" level="INFO">Repeating keyword, round 556/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.947910" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.947574" elapsed="0.002404"/>
</kw>
<msg time="2026-10-20T23:34:32.950032" level="INFO">Repeating keyword, round 557/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.950568" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.950188" elapsed="0.001995"/>
</kw>
<msg time="2026-10-20T23:34:32.952245" level="INFO">Repeating keyword, round 558/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.952796" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.952447" elapsed="0.001720"/>
</kw>
<msg time="2026-10-20T23:34:32.954233" level="INFO">Repeating keyword, round 559/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.954803" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.954434" elapsed="0.002718"/>
</kw>
<msg time="2026-10-20T23:34:32.957218" level="INFO">Repeating keyword, round 560/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.957960" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.957398" elapsed="0.002484"/>
</kw>
<msg time="2026-10-20T23:34:32.959938" level="INFO">Repeating keyword, round 561/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.960422" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.960090" elapsed="0.001212"/>
</kw>
<msg time="2026-10-20T23:34:32.961413" level="INFO">Repeating keyword, round 562/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.961876" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.961589" elapsed="0.002163"/>
</kw>
<msg time="2026-10-20T23:34:32.963929" level="INFO">Repeating keyword, round 563/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.965094" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.964410" elapsed="0.002165"/>
</kw>
<msg time="2026-10-20T23:34:32.966632" level="INFO">Repeating keyword, round 564/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.967129" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.966832" elapsed="0.002072"/>
</kw>
<msg time="2026-10-20T23:34:32.968960" level="INFO">Repeating keyword, round 565/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.969489" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.969118" elapsed="0.001294"/>
</kw>
<msg time="2026-10-20T23:34:32.970465" level="INFO">Repeating keyword, round 566/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.970923" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.970633" elapsed="0.001792"/>
</kw>
<msg time="2026-10-20T23:34:32.972492" level="INFO">Repeating keyword, round 567/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.972939" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.972649" elapsed="0.001780"/>
</kw>
<msg time="2026-10-20T23:34:32.974494" level="INFO">Repeating keyword, round 568/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.974938" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.974649" elapsed="0.001287"/>
</kw>
<msg time="2026-10-20T23:34:32.975988" level="INFO">Repeating keyword, round 569/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.976515" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.976143" elapsed="0.001705"/>
</kw>
<msg time="2026-10-20T23:34:32.977901" level="INFO">Repeating keyword, round 570/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.978441" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.978054" elapsed="0.001386"/>
</kw>
<msg time="2026-10-20T23:34:32.979508" level="INFO">Repeating keyword, round 571/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.979950" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.979664" elapsed="0.001684"/>
</kw>
<msg time="2026-10-20T23:34:32.981408" level="INFO">Repeating keyword, round 572/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.982003" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.981667" elapsed="0.001289"/>
</kw>
<msg time="2026-10-20T23:34:32.983016" level="INFO">Repeating keyword, round 573/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.983519" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.983171" elapsed="0.002452"/>
</kw>
<msg time="2026-10-20T23:34:32.985678" level="INFO">Repeating keyword, round 574/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.986190" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.985832" elapsed="0.001573"/>
</kw>
<msg time="2026-10-20T23:34:32.987461" level="INFO">Repeating keyword, round 575/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.987919" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.987629" elapsed="0.001788"/>
</kw>
<msg time="2026-10-20T23:34:32.989472" level="INFO">Repeating keyword, round 576/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.989926" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.989640" elapsed="0.001204"/>
</kw>
<msg time="2026-10-20T23:34:32.990901" level="INFO">Repeating keyword, round 577/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.991452" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.991055" elapsed="0.002132"/>
</kw>
<msg time="2026-10-20T23:34:32.993252" level="INFO">Repeating keyword, round 578/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.994122" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.993783" elapsed="0.001329"/>
</kw>
<msg time="2026-10-20T23:34:32.995174" level="INFO">Repeating keyword, round 579/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.995714" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.995402" elapsed="0.001400"/>
</kw>
<msg time="2026-10-20T23:34:32.996853" level="INFO">Repeating keyword, round 580/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.997287" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.997004" elapsed="0.001674"/>
</kw>
<msg time="2026-10-20T23:34:32.998731" level="INFO">Repeating keyword, round 581/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:32.999219" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:32.998884" elapsed="0.001265"/>
</kw>
<msg time="2026-10-20T23:34:33.000202" level="INFO">Repeating keyword, round 582/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:33.001161" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:33.000704" elapsed="0.001189"/>
</kw>
<msg time="2026-10-20T23:34:33.001945" level="INFO">Repeating keyword, round 583/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:33.002458" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:33.002098" elapsed="0.002067"/>
</kw>
<msg time="2026-10-20T23:34:33.004226" level="INFO">Repeating keyword, round 584/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:33.004759" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:33.004414" elapsed="0.002023"/>
</kw>
<msg time="2026-10-20T23:34:33.006503" level="INFO">Repeating keyword, round 585/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:33.006947" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:33.006658" elapsed="0.001212"/>
</kw>
<msg time="2026-10-20T23:34:33.007928" level="INFO">Repeating keyword, round 586/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:33.008431" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:33.008083" elapsed="0.001736"/>
</kw>
<msg time="2026-10-20T23:34:33.009912" level="INFO">Repeating keyword, round 587/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:33.010796" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:33.010067" elapsed="0.001722"/>
</kw>
<msg time="2026-10-20T23:34:33.011840" level="INFO">Repeating keyword, round 588/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:33.012277" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:33.011992" elapsed="0.001729"/>
</kw>
<msg time="2026-10-20T23:34:33.013898" level="INFO">Repeating keyword, round 589/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:33.015015" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:33.014372" elapsed="0.001685"/>
</kw>
<msg time="2026-10-20T23:34:33.016254" level="INFO">Repeating keyword, round 590/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:33.017184" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:33.016817" elapsed="0.002484"/>
</kw>
<msg time="2026-10-20T23:34:33.019379" level="INFO">Repeating keyword, round 591/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:33.019924" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:33.019567" elapsed="0.001281"/>
</kw>
<msg time="2026-10-20T23:34:33.020944" level="INFO">Repeating keyword, round 592/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:33.021493" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:33.021101" elapsed="0.002679"/>
</kw>
<msg time="2026-10-20T23:34:33.023845" level="INFO">Repeating keyword, round 593/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:33.024373" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:33.024001" elapsed="0.002083"/>
</kw>
<msg time="2026-10-20T23:34:33.026150" level="INFO">Repeating keyword, round 594/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:33.026722" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:33.026356" elapsed="0.001306"/>
</kw>
<msg time="2026-10-20T23:34:33.027717" level="INFO">Repeating keyword, round 595/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:33.028160" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:33.027872" elapsed="0.001915"/>
</kw>
<msg time="2026-10-20T23:34:33.029843" level="INFO">Repeating keyword, round 596/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:33.030371" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:33.030035" elapsed="0.002100"/>
</kw>
<msg time="2026-10-20T23:34:33.032198" level="INFO">Repeating keyword, round 597/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:33.032791" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:33.032390" elapsed="0.001450"/>
</kw>
<msg time="2026-10-20T23:34:33.033930" level="INFO">Repeating keyword, round 598/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:33.034431" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:33.034099" elapsed="0.002018"/>
</kw>
<msg time="2026-10-20T23:34:33.036179" level="INFO">Repeating keyword, round 599/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:33.036719" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:33.036366" elapsed="0.001277"/>
</kw>
<msg time="2026-10-20T23:34:33.037728" level="INFO">Repeating keyword, round 600/600.</msg>
<kw name="Start Process" owner="Process">
<msg time="2026-10-20T23:34:33.038170" level="INFO">Starting process:
nc -w 1 10.30.170.223 6633</msg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Starts a new process on background.</doc>
<status status="PASS" start="2026-10-20T23:34:33.037888" elapsed="0.002007"/>
</kw>
<arg>${number_ofconnections_to_fail}</arg>
<arg>Start Process</arg>
<arg>nc</arg>
<arg>-w</arg>
<arg>1</arg>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${openflow_port}</arg>
<doc>Executes the specified keyword multiple times.</doc>
<status status="PASS" start="2026-10-20T23:34:31.871849" elapsed="1.168130"/>
</kw>
<kw name="Run" owner="OperatingSystem">
<msg time="2026-10-20T23:34:33.040258" level="INFO">Running command 'pkill -f 'nc -w''.</msg>
<arg>pkill -f 'nc -w'</arg>
<doc>*This keyword is considered deprecated. Use the [Process] library instead.*</doc>
<status status="PASS" start="2026-10-20T23:34:33.040154" elapsed="0.154046"/>
</kw>
<kw name="Log Environment Details">
<kw name="Get Process ID Based On Regex On Remote System" owner="Utils">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:34:33.198273" level="INFO">${cmd} = ps -elf | grep -v grep | grep java.*karaf | awk '{print $4}'</msg>
<var>${cmd}</var>
<arg>ps -elf | grep -v grep | grep ${regex_string_to_match_on} | awk '{print $4}'</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:34:33.197831" elapsed="0.000491"/>
</kw>
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:33.199562" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:34:33.199237" elapsed="0.000388"/>
</branch>
<status status="PASS" start="2026-10-20T23:34:33.199200" elapsed="0.000461"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:34:33.200087" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-10-20T23:34:33.199857" elapsed="0.000349"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:34:33.200709" level="INFO">Attempting to execute command "ps -elf | grep -v grep | grep java.*karaf | awk '{print $4}'" on remote system "10.30.170.223" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:34:33.200388" elapsed="0.000364"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:34:33.201400" 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-10-20T23:34:33.201021" elapsed="0.000404"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-20T23:34:33.202298" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:34:33.202389" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-20T23:34:33.201993" 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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:34:33.202564" elapsed="0.000358"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:34:33.203776" level="INFO">Logging into '10.30.170.223:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:34:33.546237" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-194-generic x86_64)

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

 System information as of Tue Oct 20 23:34:29 UTC 2026

  System load:  0.0                Processes:             120
  Usage of /:   14.0% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.170.223
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Tue Oct 20 23:34:31 2026 from 10.30.170.114
[?2004h[jenkins@releng-34016-79-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-10-20T23:34:33.203528" elapsed="0.342875"/>
</kw>
<msg time="2026-10-20T23:34:33.546504" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:34:33.203068" elapsed="0.343540"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-10-20T23:34:33.201615" elapsed="0.345120"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:34:33.547260" level="INFO">Executing command 'ps -elf | grep -v grep | grep java.*karaf | awk '{print $4}''.</msg>
<msg time="2026-10-20T23:34:33.570348" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:34:33.570532" level="INFO">${stdout} = 4384</msg>
<msg time="2026-10-20T23:34:33.570590" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:34:33.547001" elapsed="0.023620"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:34:33.570811" elapsed="0.000341"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:34:33.571874" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:34:33.571460" elapsed="0.000475"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:34:33.572276" elapsed="0.000049"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:34:33.572065" elapsed="0.000316"/>
</branch>
<status status="PASS" start="2026-10-20T23:34:33.572021" 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-10-20T23:34:33.572629" elapsed="0.000036"/>
</return>
<status status="PASS" start="2026-10-20T23:34:33.572508" elapsed="0.000204"/>
</branch>
<status status="PASS" start="2026-10-20T23:34:33.572471" elapsed="0.000275"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:34:33.572791" 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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:34:33.573890" 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-10-20T23:34:33.574911" elapsed="0.000217"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:34:33.575286" elapsed="0.000147"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-10-20T23:34:33.573220" elapsed="0.002302"/>
</kw>
<msg time="2026-10-20T23:34:33.575658" level="INFO">${output} = 4384</msg>
<var>${output}</var>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>prompt=${prompt}</arg>
<arg>prompt_timeout=${prompt_timeout}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-10-20T23:34:33.198702" elapsed="0.376987"/>
</kw>
<kw name="Fetch From Left" owner="String">
<msg time="2026-10-20T23:34:33.576160" level="INFO">${pid} = 4384</msg>
<var>${pid}</var>
<arg>${output}</arg>
<arg>\r</arg>
<doc>Returns contents of the `string` before the first occurrence of `marker`.</doc>
<status status="PASS" start="2026-10-20T23:34:33.575902" elapsed="0.000290"/>
</kw>
<return>
<value>${pid}</value>
<status status="PASS" start="2026-10-20T23:34:33.576250" elapsed="0.000037"/>
</return>
<msg time="2026-10-20T23:34:33.576449" level="INFO">${output} = 4384</msg>
<var>${output}</var>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>java.*karaf</arg>
<arg>${ODL_SYSTEM_USER}</arg>
<doc>Uses ps to find a process that matches the supplied regex. Returns the PID of that process
The ${regex_string_to_match_on} should produce a unique process otherwise the PID returned may not be
the expected PID</doc>
<status status="PASS" start="2026-10-20T23:34:33.197202" elapsed="0.379278"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:34:33.577160" level="INFO">4384</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:34:33.576845" elapsed="0.000371"/>
</kw>
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:33.578613" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:34:33.578261" elapsed="0.000425"/>
</branch>
<status status="PASS" start="2026-10-20T23:34:33.578237" elapsed="0.000482"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:34:33.579134" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-10-20T23:34:33.578948" elapsed="0.000347"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:34:33.579978" level="INFO">Attempting to execute command "netstat -na | grep 6633" on remote system "10.30.170.223" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:34:33.579571" elapsed="0.000467"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:34:33.580714" 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-10-20T23:34:33.580247" elapsed="0.000501"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-20T23:34:33.581906" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:34:33.582002" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-20T23:34:33.581522" 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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:34:33.582204" elapsed="0.000677"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:34:33.584062" level="INFO">Logging into '10.30.170.223:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:34:33.956173" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-194-generic x86_64)

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

 System information as of Tue Oct 20 23:34:29 UTC 2026

  System load:  0.0                Processes:             120
  Usage of /:   14.0% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.170.223
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Tue Oct 20 23:34:33 2026 from 10.30.170.114
[?2004h[jenkins@releng-34016-79-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-10-20T23:34:33.583728" elapsed="0.372719"/>
</kw>
<msg time="2026-10-20T23:34:33.956580" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:34:33.583107" elapsed="0.373598"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-10-20T23:34:33.580984" elapsed="0.375883"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:34:33.957628" level="INFO">Executing command 'netstat -na | grep 6633'.</msg>
<msg time="2026-10-20T23:34:33.970817" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-10-20T23:34:33.970977" level="INFO">${stdout} = </msg>
<msg time="2026-10-20T23:34:33.971024" 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-10-20T23:34:33.957245" elapsed="0.013809"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:34:33.971213" elapsed="0.000338"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:34:33.972167" 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-10-20T23:34:33.971801" elapsed="0.000408"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:34:33.972542" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:34:33.972340" elapsed="0.000267"/>
</branch>
<status status="PASS" start="2026-10-20T23:34:33.972283" elapsed="0.000350"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-10-20T23:34:33.972774" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-10-20T23:34:33.972689" elapsed="0.000144"/>
</branch>
<status status="PASS" start="2026-10-20T23:34:33.972675" elapsed="0.000181"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:34:33.972889" 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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:34:33.973803" elapsed="0.002772"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-20T23:34:33.976873" elapsed="0.000183"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:34:33.977183" 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-10-20T23:34:33.973245" elapsed="0.004128"/>
</kw>
<msg time="2026-10-20T23:34:33.977489" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>netstat -na | grep 6633</arg>
<arg>${ODL_SYSTEM_USER}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-10-20T23:34:33.577703" elapsed="0.399829"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:34:33.977953" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:34:33.977727" elapsed="0.000265"/>
</kw>
<doc>Will display relevant details of the test environement to help aid debugging efforts if
needed in the future.</doc>
<status status="PASS" start="2026-10-20T23:34:33.194958" elapsed="0.783089"/>
</kw>
<kw name="Get Process Thread Count On Remote System" owner="Utils">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:34:33.978988" level="INFO">${cmd} = ps --no-headers -o nlwp 4384</msg>
<var>${cmd}</var>
<arg>ps --no-headers -o nlwp ${pid}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:34:33.978721" elapsed="0.000291"/>
</kw>
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:33.980054" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:34:33.979835" elapsed="0.000270"/>
</branch>
<status status="PASS" start="2026-10-20T23:34:33.979817" elapsed="0.000310"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:34:33.980453" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-10-20T23:34:33.980292" elapsed="0.000296"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:34:33.981037" level="INFO">Attempting to execute command "ps --no-headers -o nlwp 4384" on remote system "10.30.170.223" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:34:33.980748" elapsed="0.000331"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:34:33.981577" 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-10-20T23:34:33.981230" elapsed="0.000370"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-20T23:34:33.983671" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:34:33.983774" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-20T23:34:33.983200" elapsed="0.000599"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:34:33.983946" elapsed="0.000396"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:34:33.985151" level="INFO">Logging into '10.30.170.223:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:34:34.353134" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-194-generic x86_64)

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

 System information as of Tue Oct 20 23:34:29 UTC 2026

  System load:  0.0                Processes:             120
  Usage of /:   14.0% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.170.223
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Tue Oct 20 23:34:33 2026 from 10.30.170.114
[?2004h[jenkins@releng-34016-79-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-10-20T23:34:33.984868" elapsed="0.368516"/>
</kw>
<msg time="2026-10-20T23:34:34.353497" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:34:33.984491" elapsed="0.369135"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-10-20T23:34:33.982555" elapsed="0.371219"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:34:34.354478" level="INFO">Executing command 'ps --no-headers -o nlwp 4384'.</msg>
<msg time="2026-10-20T23:34:34.367542" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:34:34.367706" level="INFO">${stdout} =  177</msg>
<msg time="2026-10-20T23:34:34.367763" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:34:34.354125" elapsed="0.013668"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:34:34.368206" elapsed="0.000377"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:34:34.369410" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:34:34.368912" elapsed="0.000553"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:34:34.369843" elapsed="0.000027"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:34:34.369622" elapsed="0.000296"/>
</branch>
<status status="PASS" start="2026-10-20T23:34:34.369577" elapsed="0.000377"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-10-20T23:34:34.370143" elapsed="0.000034"/>
</return>
<status status="PASS" start="2026-10-20T23:34:34.370026" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-10-20T23:34:34.370006" elapsed="0.000245"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:34:34.370296" 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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:34:34.371791" elapsed="0.000430"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-20T23:34:34.372464" elapsed="0.000241"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:34:34.372869" elapsed="0.000124"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-10-20T23:34:34.370778" elapsed="0.002282"/>
</kw>
<msg time="2026-10-20T23:34:34.373198" level="INFO">${output} =  177</msg>
<var>${output}</var>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>prompt=${prompt}</arg>
<arg>prompt_timeout=${prompt_timeout}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-10-20T23:34:33.979343" elapsed="0.393887"/>
</kw>
<kw name="Fetch From Left" owner="String">
<msg time="2026-10-20T23:34:34.373742" level="INFO">${thread_count} =  177</msg>
<var>${thread_count}</var>
<arg>${output}</arg>
<arg>\r</arg>
<doc>Returns contents of the `string` before the first occurrence of `marker`.</doc>
<status status="PASS" start="2026-10-20T23:34:34.373464" elapsed="0.000311"/>
</kw>
<return>
<value>${thread_count}</value>
<status status="PASS" start="2026-10-20T23:34:34.373837" elapsed="0.000037"/>
</return>
<msg time="2026-10-20T23:34:34.374018" level="INFO">${ending_thread_count} =  177</msg>
<var>${ending_thread_count}</var>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>${controller_pid}</arg>
<arg>${ODL_SYSTEM_USER}</arg>
<doc>Executes the ps command to retrieve the lightweight process (aka thread) count.</doc>
<status status="PASS" start="2026-10-20T23:34:33.978227" elapsed="0.395823"/>
</kw>
<kw name="Log Environment Details">
<kw name="Get Process ID Based On Regex On Remote System" owner="Utils">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:34:34.377206" level="INFO">${cmd} = ps -elf | grep -v grep | grep java.*karaf | awk '{print $4}'</msg>
<var>${cmd}</var>
<arg>ps -elf | grep -v grep | grep ${regex_string_to_match_on} | awk '{print $4}'</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:34:34.376825" elapsed="0.000420"/>
</kw>
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:34.378746" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:34:34.378402" elapsed="0.000427"/>
</branch>
<status status="PASS" start="2026-10-20T23:34:34.378377" elapsed="0.000489"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:34:34.379346" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-10-20T23:34:34.379123" elapsed="0.000412"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:34:34.380166" level="INFO">Attempting to execute command "ps -elf | grep -v grep | grep java.*karaf | awk '{print $4}'" on remote system "10.30.170.223" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:34:34.379767" elapsed="0.000458"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:34:34.380889" 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-10-20T23:34:34.380456" elapsed="0.000467"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-20T23:34:34.382034" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:34:34.382129" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-20T23:34:34.381658" elapsed="0.000501"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:34:34.382350" elapsed="0.000427"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:34:34.383795" level="INFO">Logging into '10.30.170.223:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:34:34.803127" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-194-generic x86_64)

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

 System information as of Tue Oct 20 23:34:29 UTC 2026

  System load:  0.0                Processes:             120
  Usage of /:   14.0% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.170.223
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Tue Oct 20 23:34:34 2026 from 10.30.170.114
[?2004h[jenkins@releng-34016-79-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-10-20T23:34:34.383461" elapsed="0.420103"/>
</kw>
<msg time="2026-10-20T23:34:34.803696" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:34:34.382968" elapsed="0.420860"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-10-20T23:34:34.381159" elapsed="0.422838"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:34:34.804826" level="INFO">Executing command 'ps -elf | grep -v grep | grep java.*karaf | awk '{print $4}''.</msg>
<msg time="2026-10-20T23:34:34.828062" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:34:34.828246" level="INFO">${stdout} = 4384</msg>
<msg time="2026-10-20T23:34:34.828334" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:34:34.804420" elapsed="0.023950"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:34:34.828610" elapsed="0.000364"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:34:34.830051" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:34:34.829298" 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-10-20T23:34:34.830505" elapsed="0.000047"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:34:34.830251" elapsed="0.000357"/>
</branch>
<status status="PASS" start="2026-10-20T23:34:34.830203" 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-10-20T23:34:34.830852" elapsed="0.000037"/>
</return>
<status status="PASS" start="2026-10-20T23:34:34.830725" elapsed="0.000210"/>
</branch>
<status status="PASS" start="2026-10-20T23:34:34.830703" elapsed="0.000265"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:34:34.831015" 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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:34:34.832183" elapsed="0.000494"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-20T23:34:34.832912" elapsed="0.000265"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:34:34.833394" elapsed="0.000153"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-10-20T23:34:34.831543" elapsed="0.002076"/>
</kw>
<msg time="2026-10-20T23:34:34.833765" level="INFO">${output} = 4384</msg>
<var>${output}</var>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>prompt=${prompt}</arg>
<arg>prompt_timeout=${prompt_timeout}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-10-20T23:34:34.377708" elapsed="0.456091"/>
</kw>
<kw name="Fetch From Left" owner="String">
<msg time="2026-10-20T23:34:34.834303" level="INFO">${pid} = 4384</msg>
<var>${pid}</var>
<arg>${output}</arg>
<arg>\r</arg>
<doc>Returns contents of the `string` before the first occurrence of `marker`.</doc>
<status status="PASS" start="2026-10-20T23:34:34.834027" elapsed="0.000332"/>
</kw>
<return>
<value>${pid}</value>
<status status="PASS" start="2026-10-20T23:34:34.834424" elapsed="0.000041"/>
</return>
<msg time="2026-10-20T23:34:34.834629" level="INFO">${output} = 4384</msg>
<var>${output}</var>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>java.*karaf</arg>
<arg>${ODL_SYSTEM_USER}</arg>
<doc>Uses ps to find a process that matches the supplied regex. Returns the PID of that process
The ${regex_string_to_match_on} should produce a unique process otherwise the PID returned may not be
the expected PID</doc>
<status status="PASS" start="2026-10-20T23:34:34.376167" elapsed="0.458497"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:34:34.835293" level="INFO">4384</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:34:34.834938" elapsed="0.000437"/>
</kw>
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:34.836850" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:34:34.836508" elapsed="0.000419"/>
</branch>
<status status="PASS" start="2026-10-20T23:34:34.836481" elapsed="0.000481"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:34:34.837445" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-10-20T23:34:34.837215" elapsed="0.000496"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:34:34.838410" level="INFO">Attempting to execute command "netstat -na | grep 6633" on remote system "10.30.170.223" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:34:34.837956" elapsed="0.000521"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:34:34.839172" 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-10-20T23:34:34.838713" elapsed="0.000495"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-20T23:34:34.840431" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:34:34.840546" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-20T23:34:34.840002" 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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:34:34.840760" elapsed="0.000490"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:34:34.842402" level="INFO">Logging into '10.30.170.223:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:34:35.221692" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-194-generic x86_64)

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

 System information as of Tue Oct 20 23:34:29 UTC 2026

  System load:  0.0                Processes:             120
  Usage of /:   14.0% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.170.223
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


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


Last login: Tue Oct 20 23:34:34 2026 from 10.30.170.114
[?2004h[jenkins@releng-34016-79-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-10-20T23:34:34.842034" elapsed="0.379890"/>
</kw>
<msg time="2026-10-20T23:34:35.222032" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:34:34.841494" elapsed="0.380643"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-10-20T23:34:34.839482" elapsed="0.382797"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:34:35.223020" level="INFO">Executing command 'netstat -na | grep 6633'.</msg>
<msg time="2026-10-20T23:34:35.236288" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-10-20T23:34:35.236491" level="INFO">${stdout} = </msg>
<msg time="2026-10-20T23:34:35.236565" 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-10-20T23:34:35.222688" elapsed="0.013910"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:34:35.236791" elapsed="0.000318"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:34:35.237871" 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-10-20T23:34:35.237431" elapsed="0.000499"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:34:35.238266" elapsed="0.000027"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:34:35.238056" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-10-20T23:34:35.238015" elapsed="0.000376"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-10-20T23:34:35.238600" elapsed="0.000034"/>
</return>
<status status="PASS" start="2026-10-20T23:34:35.238463" elapsed="0.000217"/>
</branch>
<status status="PASS" start="2026-10-20T23:34:35.238442" elapsed="0.000270"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:34:35.238757" 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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:34:35.239813" elapsed="0.000425"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-20T23:34:35.240484" elapsed="0.000244"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:34:35.240888" 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-10-20T23:34:35.239183" elapsed="0.001896"/>
</kw>
<msg time="2026-10-20T23:34:35.241218" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>${ODL_SYSTEM_IP}</arg>
<arg>netstat -na | grep 6633</arg>
<arg>${ODL_SYSTEM_USER}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-10-20T23:34:34.835865" elapsed="0.405385"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:34:35.241857" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:34:35.241528" elapsed="0.000384"/>
</kw>
<doc>Will display relevant details of the test environement to help aid debugging efforts if
needed in the future.</doc>
<status status="PASS" start="2026-10-20T23:34:34.374268" elapsed="0.867835"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:34:35.242828" level="INFO">starting count:  167
ending count:  177</msg>
<arg>starting count: ${starting_thread_count}\nending count: ${ending_thread_count}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:34:35.242366" elapsed="0.000539"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:34:35.243640" level="INFO">${acceptable_thread_count} = 197.0</msg>
<var>${acceptable_thread_count}</var>
<arg>${starting_thread_count} + (${number_of_connections_to_fail} * ${margin_of_error})</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-10-20T23:34:35.243118" elapsed="0.000557"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${ending_thread_count} &lt;= ${acceptable_thread_count}</arg>
<arg>Final thread count of ${ending_thread_count} exceeds acceptable count: ${acceptable_thread_count}</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-10-20T23:34:35.243881" elapsed="0.000572"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:34:35.246016" 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-10-20T23:34:35.245464" elapsed="0.000595"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-10-20T23:34:35.246302" elapsed="0.000267"/>
</return>
<status status="PASS" start="2026-10-20T23:34:35.246153" elapsed="0.000464"/>
</branch>
<status status="PASS" start="2026-10-20T23:34:35.246129" elapsed="0.000521"/>
</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="NOT RUN" start="2026-10-20T23:34:35.246830" elapsed="0.000028"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<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="NOT RUN" start="2026-10-20T23:34:35.247031" elapsed="0.000026"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<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="NOT RUN" start="2026-10-20T23:34:35.247282" elapsed="0.000048"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>This test fails due to ${bug_url}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:35.247510" elapsed="0.000042"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:35.247741" elapsed="0.000026"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message of the current test case.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:35.247935" elapsed="0.000025"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:35.248181" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<arg>${bug_url}</arg>
<doc>Adds The given `tags` for the current test or all tests in a suite.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:35.248482" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:34:35.248289" elapsed="0.000276"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:34:35.248264" elapsed="0.000335"/>
</if>
<arg>2429</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-10-20T23:34:35.244959" elapsed="0.003704"/>
</kw>
<doc>Using the "nc" tool, a number of connections to the 6633
will be opened and closed to simulate a failed OF handshake. The java threadcount
will be compared before and after to ensure that there are no thread leaks. Since
it's reasonable for other valid threads to be started (or stopped) during the test
a larger number of failed connections will be used and a small margin of error will
determine if the test is a PASS or FAIL</doc>
<status status="PASS" start="2026-10-20T23:34:30.209553" elapsed="5.039168"/>
</test>
<doc>OF Handshake threads should be closed if the connection has a
failure. This bug was fixed in the Helium SR3 release but
persisted in to the Lithium release. Once fixed, this will
catch any future regressions</doc>
<meta name="https://bugs.opendaylight.org/show_bug.cgi?id=2429"/>
<status status="PASS" start="2026-10-20T23:34:30.186854" elapsed="5.062489"/>
</suite>
<suite id="s1-s7" name="6917" source="/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Bug_Validation/6917.robot">
<kw name="Initialization Phase" type="SETUP">
<kw name="Start Mininet Single Controller" owner="MininetKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:34:35.279445" 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-10-20T23:34:35.279187" elapsed="0.000307"/>
</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 or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:35.281651" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:34:35.281358" elapsed="0.000350"/>
</branch>
<status status="PASS" start="2026-10-20T23:34:35.281336" elapsed="0.000397"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:34:35.282084" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-10-20T23:34:35.281929" elapsed="0.000275"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:34:35.282717" level="INFO">Attempting to execute command "sudo mn -c" on remote system "10.30.170.219" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:34:35.282412" elapsed="0.000435"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:34:35.283364" level="INFO">${conn_id} = 39</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-20T23:34:35.283028" elapsed="0.000362"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-20T23:34:35.284192" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:34:35.284262" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-20T23:34:35.283918" elapsed="0.000367"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:34:35.284455" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:34:35.285658" level="INFO">Logging into '10.30.170.219:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:34:36.000975" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Tue Oct 20 23:34:35 UTC 2026

  System load:  0.03               Processes:             107
  Usage of /:   19.8% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.219
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

5 updates can be applied immediately.
To see these additional updates run: apt list --upgradable

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


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


Last login: Tue Oct 20 23:20:00 2026 from 10.30.170.114
[?2004h[jenkins@releng-34016-79-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-10-20T23:34:35.285407" elapsed="0.715849"/>
</kw>
<msg time="2026-10-20T23:34:36.001397" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:34:35.285019" elapsed="0.716508"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-10-20T23:34:35.283606" elapsed="0.718098"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:34:36.002523" level="INFO">Executing command 'sudo mn -c'.</msg>
<msg time="2026-10-20T23:34:37.182160" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:34:37.182723" level="INFO">${stdout} = </msg>
<msg time="2026-10-20T23:34:37.182828" 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-10-20T23:34:36.002139" elapsed="1.180746"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:34:37.183483" elapsed="0.000586"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:34:37.185468" 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-10-20T23:34:37.184744" 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-10-20T23:34:37.186082" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:34:37.185795" elapsed="0.000398"/>
</branch>
<status status="PASS" start="2026-10-20T23:34:37.185736" elapsed="0.000507"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-10-20T23:34:37.186601" elapsed="0.000075"/>
</return>
<status status="PASS" start="2026-10-20T23:34:37.186390" elapsed="0.000357"/>
</branch>
<status status="PASS" start="2026-10-20T23:34:37.186356" elapsed="0.000442"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:34:37.186874" 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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:34:37.188557" 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-10-20T23:34:37.189712" elapsed="0.000341"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:34:37.190405" elapsed="0.000228"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-10-20T23:34:37.187652" elapsed="0.003090"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-10-20T23:34:35.280922" elapsed="1.909977"/>
</kw>
<msg time="2026-10-20T23:34:37.191161" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:34:35.280368" elapsed="1.910906"/>
</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-10-20T23:34:35.279979" elapsed="1.911490"/>
</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 or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:37.195540" elapsed="0.000069"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:34:37.194920" elapsed="0.000768"/>
</branch>
<status status="PASS" start="2026-10-20T23:34:37.194879" elapsed="0.000863"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:34:37.196495" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-10-20T23:34:37.196176" elapsed="0.000609"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:34:37.197911" 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.219" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:34:37.197209" elapsed="0.000802"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:34:37.199135" level="INFO">${conn_id} = 41</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-20T23:34:37.198440" elapsed="0.000753"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-20T23:34:37.201009" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:34:37.201165" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-20T23:34:37.200409" elapsed="0.000807"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:34:37.201598" elapsed="0.000655"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:34:37.204069" level="INFO">Logging into '10.30.170.219:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:34:37.602749" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Tue Oct 20 23:34:35 UTC 2026

  System load:  0.03               Processes:             107
  Usage of /:   19.8% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.219
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

5 updates can be applied immediately.
To see these additional updates run: apt list --upgradable

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


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


Last login: Tue Oct 20 23:34:35 2026 from 10.30.170.114
[?2004h[jenkins@releng-34016-79-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-10-20T23:34:37.203528" elapsed="0.399536"/>
</kw>
<msg time="2026-10-20T23:34:37.603203" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:34:37.202671" elapsed="0.400702"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-10-20T23:34:37.199687" elapsed="0.403861"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:34:37.604444" 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-10-20T23:34:37.648302" level="INFO">Command exited with return code -1.</msg>
<msg time="2026-10-20T23:34:37.648871" level="INFO">${stdout} = </msg>
<msg time="2026-10-20T23:34:37.648962" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:34:37.604027" elapsed="0.044989"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:34:37.649698" elapsed="0.000784"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:34:37.651911" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:34:37.651150" elapsed="0.000850"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:34:37.652548" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:34:37.652198" elapsed="0.000660"/>
</branch>
<status status="PASS" start="2026-10-20T23:34:37.652131" elapsed="0.000787"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-10-20T23:34:37.653232" elapsed="0.000108"/>
</return>
<status status="PASS" start="2026-10-20T23:34:37.653038" elapsed="0.000374"/>
</branch>
<status status="PASS" start="2026-10-20T23:34:37.653004" elapsed="0.000460"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:34:37.653542" 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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:34:37.655268" 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-10-20T23:34:37.656430" elapsed="0.000371"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:34:37.657115" 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-10-20T23:34:37.654369" elapsed="0.003087"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-10-20T23:34:37.194001" elapsed="0.463639"/>
</kw>
<msg time="2026-10-20T23:34:37.657758" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:34:37.192748" elapsed="0.465128"/>
</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-10-20T23:34:37.191851" elapsed="0.466190"/>
</kw>
<arg>${mininet}</arg>
<status status="PASS" start="2026-10-20T23:34:35.279699" elapsed="2.378462"/>
</kw>
<kw name="Open_Connection_To_Tools_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:34:37.663213" level="INFO">${tools_connection} = 43</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-10-20T23:34:37.662509" elapsed="0.000759"/>
</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-10-20T23:34:37.666736" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:34:37.666890" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-20T23:34:37.666095" elapsed="0.000845"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:34:37.667282" elapsed="0.000694"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:34:37.669863" level="INFO">Logging into '10.30.170.219:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:34:38.064156" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Tue Oct 20 23:34:35 UTC 2026

  System load:  0.03               Processes:             107
  Usage of /:   19.8% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.219
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

5 updates can be applied immediately.
To see these additional updates run: apt list --upgradable

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


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


Last login: Tue Oct 20 23:34:37 2026 from 10.30.170.114
[?2004h[jenkins@releng-34016-79-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-10-20T23:34:37.669272" elapsed="0.395156"/>
</kw>
<msg time="2026-10-20T23:34:38.064547" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:34:37.668385" elapsed="0.396296"/>
</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-10-20T23:34:37.665194" elapsed="0.399641"/>
</kw>
<msg time="2026-10-20T23:34:38.064892" 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-10-20T23:34:37.664366" elapsed="0.400573"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-10-20T23:34:37.663686" elapsed="0.401332"/>
</kw>
<return>
<value>${tools_connection}</value>
<status status="PASS" start="2026-10-20T23:34:38.065090" elapsed="0.000059"/>
</return>
<msg time="2026-10-20T23:34:38.065365" level="INFO">${mininet_conn_id} = 43</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-10-20T23:34:37.661563" elapsed="0.403829"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-20T23:34:38.066463" level="INFO">${mininet_conn_id} = 43</msg>
<arg>${mininet_conn_id}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-20T23:34:38.065895" elapsed="0.000608"/>
</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-10-20T23:34:38.067142" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:34:38.066752" elapsed="0.000442"/>
</branch>
<status status="PASS" start="2026-10-20T23:34:38.066719" elapsed="0.000505"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:34:38.067852" level="INFO">Start mininet --topo tree,1 to 10.30.170.223</msg>
<arg>Start mininet ${options} to ${controller}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:34:38.067548" elapsed="0.000348"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-20T23:34:38.070890" level="INFO">sudo mn --controller 'remote,ip=10.30.170.223,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-10-20T23:34:38.068087" elapsed="0.002862"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-10-20T23:34:38.288773" 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-10-20T23:34:38.071117" elapsed="0.217908"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:34:38.290208" 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-10-20T23:34:38.289665" elapsed="0.000588"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-20T23:34:38.291862" 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-10-20T23:34:38.290470" elapsed="0.001449"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-10-20T23:34:38.300063" level="INFO">107600c3-66af-48f0-9450-39adc6e35b8d
    Bridge s1
        Controller "ptcp:6654"
        Controller "tcp:10.30.170.223:6633"
        fail_mode: secure
        Port s1
            Interface s1
                type: internal
        Port s1-eth2
            Interface s1-eth2
        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-10-20T23:34:38.292090" elapsed="0.008040"/>
</kw>
<return>
<value>${mininet_conn_id}</value>
<status status="PASS" start="2026-10-20T23:34:38.300190" elapsed="0.000071"/>
</return>
<msg time="2026-10-20T23:34:38.300512" level="INFO">${mininet_conn_id} = 43</msg>
<var>${mininet_conn_id}</var>
<doc>Start Mininet with custom topology and connect to controller.</doc>
<status status="PASS" start="2026-10-20T23:34:35.278580" elapsed="3.021959"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-20T23:34:38.301173" level="INFO">${mininet_conn_id} = 43</msg>
<arg>${mininet_conn_id}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-20T23:34:38.300777" elapsed="0.000436"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:34:38.302731" level="INFO">Creating Session using : alias=session, url=http://10.30.170.223:8181, headers={'Content-Type': 'application/xml'},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x756aa4b27d90&gt;, timeout=None, proxies=None, verify=False,                     debug=0 </msg>
<arg>session</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>headers=${HEADERS_XML}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-10-20T23:34:38.301413" elapsed="0.002022"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:34:38.311364" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:34:38.311426" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:34:38.311606" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:34:38.305430" elapsed="0.006740">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:34:38.312539" elapsed="0.000024"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:38.312765" elapsed="0.000021"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${switches}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:38.312965" elapsed="0.000019"/>
</kw>
<arg>1</arg>
<doc>Check switches are in the topology.</doc>
<status status="FAIL" start="2026-10-20T23:34:38.305005" elapsed="0.008104">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:34:39.321551" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:34:39.321967" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:34:39.322245" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:34:39.314954" elapsed="0.008249">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:34:39.323889" elapsed="0.000052"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:39.324362" elapsed="0.000047"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${switches}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:39.324811" elapsed="0.000044"/>
</kw>
<arg>1</arg>
<doc>Check switches are in the topology.</doc>
<status status="FAIL" start="2026-10-20T23:34:39.314118" elapsed="0.010945">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:34:40.334154" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:34:40.334285" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:34:40.334577" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:34:40.327536" elapsed="0.008063">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:34:40.336248" elapsed="0.000049"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:40.336745" elapsed="0.000044"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${switches}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:40.337201" elapsed="0.000048"/>
</kw>
<arg>1</arg>
<doc>Check switches are in the topology.</doc>
<status status="FAIL" start="2026-10-20T23:34:40.326005" elapsed="0.011481">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:34:41.345713" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:34:41.345843" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:34:41.346095" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:34:41.339360" elapsed="0.007721">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:34:41.347756" elapsed="0.000052"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:41.348198" elapsed="0.000043"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${switches}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:41.348830" elapsed="0.000047"/>
</kw>
<arg>1</arg>
<doc>Check switches are in the topology.</doc>
<status status="FAIL" start="2026-10-20T23:34:41.338543" elapsed="0.010566">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:34:42.357226" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:34:42.357403" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:34:42.357641" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:34:42.350892" elapsed="0.007743">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:34:42.359273" elapsed="0.000082"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:42.359763" elapsed="0.000044"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${switches}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:42.360175" elapsed="0.000041"/>
</kw>
<arg>1</arg>
<doc>Check switches are in the topology.</doc>
<status status="FAIL" start="2026-10-20T23:34:42.350107" elapsed="0.010337">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:34:43.369241" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:34:43.369430" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:34:43.369683" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:34:43.362514" elapsed="0.008216">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:34:43.371446" elapsed="0.000051"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:43.371912" elapsed="0.000044"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${switches}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:43.372353" elapsed="0.000045"/>
</kw>
<arg>1</arg>
<doc>Check switches are in the topology.</doc>
<status status="FAIL" start="2026-10-20T23:34:43.361631" elapsed="0.010969">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:34:44.381222" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:34:44.381396" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:34:44.381828" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:34:44.374649" elapsed="0.008880">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:34:44.384222" elapsed="0.000050"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:44.384696" elapsed="0.000045"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${switches}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:44.385138" elapsed="0.000043"/>
</kw>
<arg>1</arg>
<doc>Check switches are in the topology.</doc>
<status status="FAIL" start="2026-10-20T23:34:44.373792" elapsed="0.011631">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:34:45.394161" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:34:45.394296" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:34:45.394590" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:34:45.387461" elapsed="0.008145">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:34:45.396289" elapsed="0.000078"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:45.396764" elapsed="0.000065"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${switches}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:45.397287" elapsed="0.000073"/>
</kw>
<arg>1</arg>
<doc>Check switches are in the topology.</doc>
<status status="FAIL" start="2026-10-20T23:34:45.386618" elapsed="0.010946">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:34:46.406939" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:34:46.407092" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:34:46.407412" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:34:46.399738" elapsed="0.008803">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:34:46.409258" elapsed="0.000076"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:46.409733" elapsed="0.000042"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${switches}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:46.410168" elapsed="0.000043"/>
</kw>
<arg>1</arg>
<doc>Check switches are in the topology.</doc>
<status status="FAIL" start="2026-10-20T23:34:46.398796" elapsed="0.011662">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:34:47.419559" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:34:47.419875" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:34:47.420152" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:34:47.412694" elapsed="0.008666">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:34:47.422065" elapsed="0.000051"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:47.422544" elapsed="0.000214"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${switches}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:47.423159" elapsed="0.000043"/>
</kw>
<arg>1</arg>
<doc>Check switches are in the topology.</doc>
<status status="FAIL" start="2026-10-20T23:34:47.411681" elapsed="0.011774">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:34:48.433478" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:34:48.433627" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:34:48.433927" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:34:48.425710" elapsed="0.009325">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:34:48.435771" elapsed="0.000051"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:48.436250" elapsed="0.000044"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${switches}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:48.436701" elapsed="0.000043"/>
</kw>
<arg>1</arg>
<doc>Check switches are in the topology.</doc>
<status status="FAIL" start="2026-10-20T23:34:48.424710" elapsed="0.012296">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<msg time="2026-10-20T23:34:48.437287" level="FAIL">Keyword 'FlowLib.Check Switches In Topology' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</msg>
<arg>10s</arg>
<arg>1s</arg>
<arg>FlowLib.Check Switches In Topology</arg>
<arg>1</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-10-20T23:34:38.303956" elapsed="10.133648">Keyword 'FlowLib.Check Switches In Topology' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<doc>Starts mininet and verify if topology is in operational datastore.</doc>
<status status="FAIL" start="2026-10-20T23:34:35.278171" elapsed="13.159746">Keyword 'FlowLib.Check Switches In Topology' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<test id="s1-s7-t1" name="Add Delete Same Flow" line="23">
<doc>Iterate on add and delete flow until alien ID is found in Operational Datastore.</doc>
<status status="FAIL" start="2026-10-20T23:34:48.438141" elapsed="0.006670">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Topology' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</test>
<test id="s1-s7-t2" name="Add Multiple Flows" line="30">
<doc>Iterate on add and delete flow until alien ID is found in Operational Datastore.</doc>
<status status="FAIL" start="2026-10-20T23:34:48.445353" elapsed="0.000781">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Topology' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</test>
<kw name="Final Phase" type="TEARDOWN">
<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-10-20T23:34:48.452749" elapsed="0.000395"/>
</kw>
<status status="PASS" start="2026-10-20T23:34:48.451928" elapsed="0.001526"/>
</branch>
<status status="PASS" start="2026-10-20T23:34:48.451836" elapsed="0.001718"/>
</if>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-20T23:34:48.457254" 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-10-20T23:34:48.454034" elapsed="0.003413"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-10-20T23:34:48.581233" level="INFO">*** Stopping 1 controllers
c0 
*** Stopping 2 links
..
*** Stopping 1 switches
s1 
*** Stopping 2 hosts
h1 h2 
*** Done
completed in 10.432 seconds
[?2004h[jenkins@releng-34016-79-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-10-20T23:34:48.457958" elapsed="0.123477"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:34:48.581831" elapsed="0.000306"/>
</kw>
<arg>${mininet_conn_id}</arg>
<doc>Stops Mininet and exits session ${mininet_conn}</doc>
<status status="PASS" start="2026-10-20T23:34:48.451404" elapsed="0.130801"/>
</kw>
<kw name="Delete All Sessions" owner="RequestsLibrary">
<msg time="2026-10-20T23:34:48.582471" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects </doc>
<status status="PASS" start="2026-10-20T23:34:48.582382" elapsed="0.000174"/>
</kw>
<doc>Stops mininet.</doc>
<status status="PASS" start="2026-10-20T23:34:48.447070" elapsed="0.135538"/>
</kw>
<doc>Test suite for bug 6917 validation.</doc>
<status status="FAIL" start="2026-10-20T23:34:35.250457" elapsed="13.332187">Suite setup failed:
Keyword 'FlowLib.Check Switches In Topology' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</suite>
<suite id="s1-s8" name="7258" source="/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Bug_Validation/7258.robot">
<kw name="Initialization Phase" type="SETUP">
<kw name="Start Mininet Single Controller" owner="MininetKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:34:48.609465" 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-10-20T23:34:48.609197" elapsed="0.000312"/>
</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 or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:48.611744" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:34:48.611454" elapsed="0.000345"/>
</branch>
<status status="PASS" start="2026-10-20T23:34:48.611429" elapsed="0.000400"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:34:48.612207" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-10-20T23:34:48.612048" elapsed="0.000303"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:34:48.612839" level="INFO">Attempting to execute command "sudo mn -c" on remote system "10.30.170.219" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:34:48.612543" elapsed="0.000354"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:34:48.613445" level="INFO">${conn_id} = 44</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-20T23:34:48.613081" elapsed="0.000392"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-20T23:34:48.614343" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:34:48.614415" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-20T23:34:48.614052" 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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:34:48.614591" elapsed="0.000505"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:34:48.615934" level="INFO">Logging into '10.30.170.219:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:34:48.960543" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Tue Oct 20 23:34:35 UTC 2026

  System load:  0.03               Processes:             107
  Usage of /:   19.8% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.219
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

5 updates can be applied immediately.
To see these additional updates run: apt list --upgradable

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


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


Last login: Tue Oct 20 23:34:37 2026 from 10.30.170.114
[?2004h[jenkins@releng-34016-79-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-10-20T23:34:48.615674" elapsed="0.345165"/>
</kw>
<msg time="2026-10-20T23:34:48.961013" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:34:48.615264" elapsed="0.345900"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-10-20T23:34:48.613730" elapsed="0.347657"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:34:48.962521" level="INFO">Executing command 'sudo mn -c'.</msg>
<msg time="2026-10-20T23:34:50.141114" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:34:50.141513" level="INFO">${stdout} = </msg>
<msg time="2026-10-20T23:34:50.141610" 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-10-20T23:34:48.962085" elapsed="1.179579"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:34:50.142171" elapsed="0.000536"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:34:50.143967" 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-10-20T23:34:50.143298" 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-10-20T23:34:50.144539" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:34:50.144251" elapsed="0.000400"/>
</branch>
<status status="PASS" start="2026-10-20T23:34:50.144197" elapsed="0.000506"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-10-20T23:34:50.145034" elapsed="0.000065"/>
</return>
<status status="PASS" start="2026-10-20T23:34:50.144815" elapsed="0.000353"/>
</branch>
<status status="PASS" start="2026-10-20T23:34:50.144783" elapsed="0.000436"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:34:50.145289" elapsed="0.000060"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:34:50.146873" elapsed="0.000708"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-20T23:34:50.148022" elapsed="0.000361"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:34:50.148702" 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-10-20T23:34:50.146024" elapsed="0.003013"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-10-20T23:34:48.611031" elapsed="1.538165"/>
</kw>
<msg time="2026-10-20T23:34:50.149335" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:34:48.610439" elapsed="1.539010"/>
</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-10-20T23:34:48.610013" elapsed="1.539597"/>
</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 or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:50.153541" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:34:50.152941" elapsed="0.000719"/>
</branch>
<status status="PASS" start="2026-10-20T23:34:50.152878" elapsed="0.000836"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:34:50.154486" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-10-20T23:34:50.154164" elapsed="0.000587"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:34:50.155870" 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.219" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:34:50.155194" elapsed="0.000797"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:34:50.157106" level="INFO">${conn_id} = 46</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-20T23:34:50.156412" elapsed="0.000752"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-20T23:34:50.159502" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:34:50.159664" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-20T23:34:50.158874" 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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:34:50.160078" elapsed="0.000677"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:34:50.162574" level="INFO">Logging into '10.30.170.219:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:34:50.586813" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Tue Oct 20 23:34:35 UTC 2026

  System load:  0.03               Processes:             107
  Usage of /:   19.8% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.219
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

5 updates can be applied immediately.
To see these additional updates run: apt list --upgradable

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


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


Last login: Tue Oct 20 23:34:48 2026 from 10.30.170.114
[?2004h[jenkins@releng-34016-79-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-10-20T23:34:50.162022" elapsed="0.424996"/>
</kw>
<msg time="2026-10-20T23:34:50.587111" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:34:50.161145" elapsed="0.426065"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-10-20T23:34:50.157747" elapsed="0.429607"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:34:50.587960" 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-10-20T23:34:50.630813" level="INFO">Command exited with return code -1.</msg>
<msg time="2026-10-20T23:34:50.631074" level="INFO">${stdout} = </msg>
<msg time="2026-10-20T23:34:50.631162" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:34:50.587683" elapsed="0.043526"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:34:50.631607" elapsed="0.000517"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:34:50.633355" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:34:50.632713" 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-10-20T23:34:50.633873" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:34:50.633614" elapsed="0.000390"/>
</branch>
<status status="PASS" start="2026-10-20T23:34:50.633560" 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-10-20T23:34:50.634383" elapsed="0.000057"/>
</return>
<status status="PASS" start="2026-10-20T23:34:50.634167" elapsed="0.000342"/>
</branch>
<status status="PASS" start="2026-10-20T23:34:50.634134" elapsed="0.000425"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:34:50.634629" 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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:34:50.636190" elapsed="0.000675"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-20T23:34:50.637301" elapsed="0.000377"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:34:50.638029" 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-10-20T23:34:50.635350" elapsed="0.003311"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-10-20T23:34:50.152071" elapsed="0.486839"/>
</kw>
<msg time="2026-10-20T23:34:50.639103" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:34:50.150843" elapsed="0.488410"/>
</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-10-20T23:34:50.149986" elapsed="0.489544"/>
</kw>
<arg>${mininet}</arg>
<status status="PASS" start="2026-10-20T23:34:48.609720" elapsed="2.030022"/>
</kw>
<kw name="Open_Connection_To_Tools_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:34:50.644712" level="INFO">${tools_connection} = 48</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-10-20T23:34:50.643985" elapsed="0.000782"/>
</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-10-20T23:34:50.648915" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:34:50.649102" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-20T23:34:50.647827" elapsed="0.001327"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:34:50.649524" elapsed="0.000678"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:34:50.652020" level="INFO">Logging into '10.30.170.219:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:34:51.074775" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Tue Oct 20 23:34:35 UTC 2026

  System load:  0.03               Processes:             107
  Usage of /:   19.8% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.219
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

5 updates can be applied immediately.
To see these additional updates run: apt list --upgradable

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


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


Last login: Tue Oct 20 23:34:50 2026 from 10.30.170.114
[?2004h[jenkins@releng-34016-79-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-10-20T23:34:50.651470" elapsed="0.423505"/>
</kw>
<msg time="2026-10-20T23:34:51.075067" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:34:50.650604" elapsed="0.424562"/>
</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-10-20T23:34:50.646956" elapsed="0.428333"/>
</kw>
<msg time="2026-10-20T23:34:51.075366" 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-10-20T23:34:50.645994" elapsed="0.429420"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-10-20T23:34:50.645286" elapsed="0.430204"/>
</kw>
<return>
<value>${tools_connection}</value>
<status status="PASS" start="2026-10-20T23:34:51.075549" elapsed="0.000047"/>
</return>
<msg time="2026-10-20T23:34:51.075762" level="INFO">${mininet_conn_id} = 48</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-10-20T23:34:50.643017" elapsed="0.432771"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-20T23:34:51.076658" level="INFO">${mininet_conn_id} = 48</msg>
<arg>${mininet_conn_id}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-20T23:34:51.076186" elapsed="0.000512"/>
</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-10-20T23:34:51.077143" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:34:51.076786" elapsed="0.000407"/>
</branch>
<status status="PASS" start="2026-10-20T23:34:51.076759" elapsed="0.000462"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:34:51.077715" level="INFO">Start mininet --topo tree,1 to 10.30.170.223</msg>
<arg>Start mininet ${options} to ${controller}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:34:51.077448" elapsed="0.000312"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-20T23:34:51.080374" level="INFO">sudo mn --controller 'remote,ip=10.30.170.223,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-10-20T23:34:51.077931" elapsed="0.002498"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-10-20T23:34:51.288212" 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-10-20T23:34:51.080598" elapsed="0.207763"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:34:51.289066" 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-10-20T23:34:51.288715" elapsed="0.000394"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-20T23:34:51.292768" 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-10-20T23:34:51.289284" elapsed="0.003540"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-10-20T23:34:51.299903" level="INFO">107600c3-66af-48f0-9450-39adc6e35b8d
    Bridge s1
        Controller "ptcp:6654"
        Controller "tcp:10.30.170.223:6633"
        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-10-20T23:34:51.293011" elapsed="0.006967"/>
</kw>
<return>
<value>${mininet_conn_id}</value>
<status status="PASS" start="2026-10-20T23:34:51.300030" elapsed="0.000047"/>
</return>
<msg time="2026-10-20T23:34:51.300225" level="INFO">${mininet_conn_id} = 48</msg>
<var>${mininet_conn_id}</var>
<doc>Start Mininet with custom topology and connect to controller.</doc>
<status status="PASS" start="2026-10-20T23:34:48.608662" elapsed="2.691588"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-20T23:34:51.300792" level="INFO">${mininet_conn_id} = 48</msg>
<arg>${mininet_conn_id}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-20T23:34:51.300473" elapsed="0.000440"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:34:51.301423" level="INFO">Creating Session using : alias=session, url=http://10.30.170.223:8181, headers={'Content-Type': 'application/xml'},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x756aa4c79390&gt;, timeout=None, proxies=None, verify=False,                     debug=0 </msg>
<arg>session</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>headers=${HEADERS_XML}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-10-20T23:34:51.301117" elapsed="0.000495"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:34:51.308186" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:34:51.308241" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:34:51.308482" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:34:51.302805" elapsed="0.006185">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:34:51.309239" elapsed="0.000021"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:51.309542" elapsed="0.000021"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${switches}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:51.309737" elapsed="0.000019"/>
</kw>
<arg>1</arg>
<doc>Check switches are in the topology.</doc>
<status status="FAIL" start="2026-10-20T23:34:51.302524" elapsed="0.007334">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:34:52.318488" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:34:52.318619" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:34:52.318868" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:34:52.311587" elapsed="0.008223">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:34:52.320494" elapsed="0.000051"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:52.320937" elapsed="0.000062"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${switches}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:52.321399" elapsed="0.000044"/>
</kw>
<arg>1</arg>
<doc>Check switches are in the topology.</doc>
<status status="FAIL" start="2026-10-20T23:34:52.310814" elapsed="0.010832">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:34:53.329784" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:34:53.329912" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:34:53.330274" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:34:53.323429" elapsed="0.007802">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:34:53.331883" elapsed="0.000051"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:53.332376" elapsed="0.000045"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${switches}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:53.332793" elapsed="0.000042"/>
</kw>
<arg>1</arg>
<doc>Check switches are in the topology.</doc>
<status status="FAIL" start="2026-10-20T23:34:53.322662" elapsed="0.010392">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:34:54.340826" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:34:54.340979" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:34:54.341245" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:34:54.334814" elapsed="0.007395">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:34:54.342861" elapsed="0.000048"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:54.343394" elapsed="0.000045"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${switches}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:54.343810" elapsed="0.000041"/>
</kw>
<arg>1</arg>
<doc>Check switches are in the topology.</doc>
<status status="FAIL" start="2026-10-20T23:34:54.334066" elapsed="0.010010">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:34:55.351807" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:34:55.351930" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:34:55.352184" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:34:55.345801" elapsed="0.007394">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:34:55.353834" elapsed="0.000047"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:55.354285" elapsed="0.000068"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${switches}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:55.354765" elapsed="0.000057"/>
</kw>
<arg>1</arg>
<doc>Check switches are in the topology.</doc>
<status status="FAIL" start="2026-10-20T23:34:55.345036" elapsed="0.010031">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:34:56.363488" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:34:56.363729" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:34:56.363969" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:34:56.356977" elapsed="0.007961">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:34:56.365629" elapsed="0.000050"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:56.366094" elapsed="0.000046"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${switches}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:56.366547" elapsed="0.000044"/>
</kw>
<arg>1</arg>
<doc>Check switches are in the topology.</doc>
<status status="FAIL" start="2026-10-20T23:34:56.356193" elapsed="0.010607">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:34:57.375668" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:34:57.375800" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:34:57.376050" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:34:57.369255" elapsed="0.007741">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:34:57.377676" elapsed="0.000051"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:57.378140" elapsed="0.000044"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${switches}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:57.378588" elapsed="0.000045"/>
</kw>
<arg>1</arg>
<doc>Check switches are in the topology.</doc>
<status status="FAIL" start="2026-10-20T23:34:57.367774" elapsed="0.011062">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:34:58.387018" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:34:58.387179" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:34:58.387474" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:34:58.380643" elapsed="0.007943">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:34:58.389263" elapsed="0.000078"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:58.389735" elapsed="0.000043"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${switches}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:58.390286" elapsed="0.000073"/>
</kw>
<arg>1</arg>
<doc>Check switches are in the topology.</doc>
<status status="FAIL" start="2026-10-20T23:34:58.379872" elapsed="0.010694">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:34:59.398860" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:34:59.398989" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:34:59.399290" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:34:59.392409" elapsed="0.008012">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:34:59.401112" elapsed="0.000250"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:59.401822" elapsed="0.000045"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${switches}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="NOT RUN" start="2026-10-20T23:34:59.402297" elapsed="0.000088"/>
</kw>
<arg>1</arg>
<doc>Check switches are in the topology.</doc>
<status status="FAIL" start="2026-10-20T23:34:59.391588" elapsed="0.011056">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:35:00.410371" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:35:00.410440" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:35:00.410576" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:35:00.404374" elapsed="0.006695">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:35:00.411619" elapsed="0.000025"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:00.411826" elapsed="0.000020"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${switches}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:00.412028" elapsed="0.000020"/>
</kw>
<arg>1</arg>
<doc>Check switches are in the topology.</doc>
<status status="FAIL" start="2026-10-20T23:35:00.403623" elapsed="0.008540">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:35:01.420911" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:35:01.421039" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:35:01.421436" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:35:01.413817" elapsed="0.008815">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:35:01.423278" elapsed="0.000077"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:01.423740" elapsed="0.000043"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${switches}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:01.424146" elapsed="0.000041"/>
</kw>
<arg>1</arg>
<doc>Check switches are in the topology.</doc>
<status status="FAIL" start="2026-10-20T23:35:01.413042" elapsed="0.011396">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<msg time="2026-10-20T23:35:01.424625" level="FAIL">Keyword 'FlowLib.Check Switches In Topology' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</msg>
<arg>10s</arg>
<arg>1s</arg>
<arg>FlowLib.Check Switches In Topology</arg>
<arg>1</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-10-20T23:34:51.301875" elapsed="10.122940">Keyword 'FlowLib.Check Switches In Topology' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<doc>Starts mininet and verify if topology is in operational datastore.</doc>
<status status="FAIL" start="2026-10-20T23:34:48.608209" elapsed="12.816847">Keyword 'FlowLib.Check Switches In Topology' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<test id="s1-s8-t1" name="Add Alien Flow And Verify It Is In Operational DS" line="23">
<doc>Add flow with incorrect in-port format to generate alien ID</doc>
<status status="FAIL" start="2026-10-20T23:35:01.425262" elapsed="0.001311">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Topology' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</test>
<kw name="Final Phase" type="TEARDOWN">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:35:01.434886" level="INFO">DELETE Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes 
 path_url=/rests/data/opendaylight-inventory:nodes 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:35:01.435014" level="INFO">DELETE Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes 
 status=404, reason=Not Found 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-10-20T23:35:01.435300" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes</msg>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:35:01.429283" elapsed="0.006961">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes</status>
</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 errorw.</doc>
<status status="PASS" start="2026-10-20T23:35:01.428282" elapsed="0.008161"/>
</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-10-20T23:35:01.441233" elapsed="0.000323"/>
</kw>
<status status="PASS" start="2026-10-20T23:35:01.440694" elapsed="0.000940"/>
</branch>
<status status="PASS" start="2026-10-20T23:35:01.440644" elapsed="0.001051"/>
</if>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-20T23:35:01.444765" 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-10-20T23:35:01.442024" elapsed="0.002864"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-10-20T23:35:01.540429" level="INFO">*** Stopping 1 controllers
c0 
*** Stopping 2 links
..
*** Stopping 1 switches
s1 
*** Stopping 2 hosts
h1 h2 
*** Done
completed in 10.391 seconds
[?2004h[jenkins@releng-34016-79-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-10-20T23:35:01.445271" elapsed="0.095293"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:35:01.540821" elapsed="0.000233"/>
</kw>
<arg>${mininet_conn_id}</arg>
<doc>Stops Mininet and exits session ${mininet_conn}</doc>
<status status="PASS" start="2026-10-20T23:35:01.440165" elapsed="0.100953"/>
</kw>
<kw name="Delete All Sessions" owner="RequestsLibrary">
<msg time="2026-10-20T23:35:01.541389" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects </doc>
<status status="PASS" start="2026-10-20T23:35:01.541297" elapsed="0.000182"/>
</kw>
<doc>Stops mininet.</doc>
<status status="PASS" start="2026-10-20T23:35:01.427660" elapsed="0.113879"/>
</kw>
<doc>Test suite for bug 6917 validation.</doc>
<status status="FAIL" start="2026-10-20T23:34:48.583476" elapsed="12.958098">Suite setup failed:
Keyword 'FlowLib.Check Switches In Topology' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</suite>
<suite id="s1-s9" name="7335" source="/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Bug_Validation/7335.robot">
<kw name="Initialization Phase" type="SETUP">
<kw name="Start Mininet Single Controller" owner="MininetKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:35:01.568707" 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-10-20T23:35:01.568458" elapsed="0.000294"/>
</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 or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:01.570985" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:35:01.570623" elapsed="0.000419"/>
</branch>
<status status="PASS" start="2026-10-20T23:35:01.570596" elapsed="0.000476"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:35:01.571485" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-10-20T23:35:01.571322" elapsed="0.000293"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:35:01.572107" level="INFO">Attempting to execute command "sudo mn -c" on remote system "10.30.170.219" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:35:01.571808" elapsed="0.000354"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:35:01.572719" level="INFO">${conn_id} = 49</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-20T23:35:01.572392" elapsed="0.000352"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-20T23:35:01.573586" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:35:01.573658" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-20T23:35:01.573291" 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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:35:01.573839" elapsed="0.000297"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:35:01.574978" level="INFO">Logging into '10.30.170.219:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:35:01.959700" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Tue Oct 20 23:34:35 UTC 2026

  System load:  0.03               Processes:             107
  Usage of /:   19.8% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.219
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

5 updates can be applied immediately.
To see these additional updates run: apt list --upgradable

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


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


Last login: Tue Oct 20 23:34:50 2026 from 10.30.170.114
[?2004h[jenkins@releng-34016-79-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-10-20T23:35:01.574740" elapsed="0.385158"/>
</kw>
<msg time="2026-10-20T23:35:01.959992" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:35:01.574354" elapsed="0.385738"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-10-20T23:35:01.572945" elapsed="0.387286"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:35:01.960862" level="INFO">Executing command 'sudo mn -c'.</msg>
<msg time="2026-10-20T23:35:03.147075" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:35:03.147596" level="INFO">${stdout} = </msg>
<msg time="2026-10-20T23:35:03.147695" 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-10-20T23:35:01.960582" elapsed="1.187170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:35:03.148362" elapsed="0.000549"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:35:03.150229" 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-10-20T23:35:03.149582" 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-10-20T23:35:03.150870" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:35:03.150581" elapsed="0.000400"/>
</branch>
<status status="PASS" start="2026-10-20T23:35:03.150526" 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-10-20T23:35:03.151384" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-10-20T23:35:03.151143" elapsed="0.000383"/>
</branch>
<status status="PASS" start="2026-10-20T23:35:03.151109" elapsed="0.000469"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:35:03.151809" 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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:35:03.153468" elapsed="0.000661"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-20T23:35:03.154691" elapsed="0.000343"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:35:03.155401" elapsed="0.000202"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-10-20T23:35:03.152582" elapsed="0.003131"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-10-20T23:35:01.570192" elapsed="1.585687"/>
</kw>
<msg time="2026-10-20T23:35:03.155995" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:35:01.569646" elapsed="1.586460"/>
</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-10-20T23:35:01.569240" elapsed="1.587049"/>
</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 or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:03.160293" elapsed="0.000077"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:35:03.159709" elapsed="0.000737"/>
</branch>
<status status="PASS" start="2026-10-20T23:35:03.159669" elapsed="0.000831"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:35:03.161215" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-10-20T23:35:03.160931" elapsed="0.000604"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:35:03.162657" 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.219" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:35:03.161960" elapsed="0.000812"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:35:03.163898" level="INFO">${conn_id} = 51</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-20T23:35:03.163168" elapsed="0.000788"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-20T23:35:03.165768" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:35:03.165922" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-20T23:35:03.165126" elapsed="0.000845"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:35:03.166363" elapsed="0.000644"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:35:03.168878" level="INFO">Logging into '10.30.170.219:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:35:03.586147" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Tue Oct 20 23:34:35 UTC 2026

  System load:  0.03               Processes:             107
  Usage of /:   19.8% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.219
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

5 updates can be applied immediately.
To see these additional updates run: apt list --upgradable

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


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


Last login: Tue Oct 20 23:35:01 2026 from 10.30.170.114
[?2004h[jenkins@releng-34016-79-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-10-20T23:35:03.168355" elapsed="0.418063"/>
</kw>
<msg time="2026-10-20T23:35:03.586540" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:35:03.167467" elapsed="0.419207"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-10-20T23:35:03.164443" elapsed="0.422381"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:35:03.587692" 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-10-20T23:35:03.620455" level="INFO">Command exited with return code -1.</msg>
<msg time="2026-10-20T23:35:03.620696" level="INFO">${stdout} = </msg>
<msg time="2026-10-20T23:35:03.620786" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:35:03.587222" elapsed="0.033610"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:35:03.621188" elapsed="0.000555"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:35:03.623069" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:35:03.622403" 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-10-20T23:35:03.623691" elapsed="0.000040"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:35:03.623398" elapsed="0.000410"/>
</branch>
<status status="PASS" start="2026-10-20T23:35:03.623334" 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-10-20T23:35:03.624158" elapsed="0.000055"/>
</return>
<status status="PASS" start="2026-10-20T23:35:03.623969" elapsed="0.000361"/>
</branch>
<status status="PASS" start="2026-10-20T23:35:03.623937" elapsed="0.000450"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:35:03.624460" 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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:35:03.626061" elapsed="0.000712"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-20T23:35:03.627185" elapsed="0.000394"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:35:03.627895" 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-10-20T23:35:03.625155" elapsed="0.003042"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-10-20T23:35:03.158818" elapsed="0.469589"/>
</kw>
<msg time="2026-10-20T23:35:03.628518" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:35:03.157574" elapsed="0.471048"/>
</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-10-20T23:35:03.156677" elapsed="0.472106"/>
</kw>
<arg>${mininet}</arg>
<status status="PASS" start="2026-10-20T23:35:01.568939" elapsed="2.059959"/>
</kw>
<kw name="Open_Connection_To_Tools_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:35:03.633873" level="INFO">${tools_connection} = 53</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-10-20T23:35:03.633141" elapsed="0.000787"/>
</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-10-20T23:35:03.637410" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:35:03.637569" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-20T23:35:03.636789" elapsed="0.000830"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:35:03.637953" elapsed="0.000686"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:35:03.640120" level="INFO">Logging into '10.30.170.219:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:35:04.043502" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Tue Oct 20 23:34:35 UTC 2026

  System load:  0.03               Processes:             107
  Usage of /:   19.8% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.219
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

5 updates can be applied immediately.
To see these additional updates run: apt list --upgradable

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


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


Last login: Tue Oct 20 23:35:03 2026 from 10.30.170.114
[?2004h[jenkins@releng-34016-79-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-10-20T23:35:03.639796" elapsed="0.403953"/>
</kw>
<msg time="2026-10-20T23:35:04.043870" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:35:03.639006" elapsed="0.404975"/>
</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-10-20T23:35:03.635849" elapsed="0.408263"/>
</kw>
<msg time="2026-10-20T23:35:04.044302" 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-10-20T23:35:03.634986" elapsed="0.409388"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-10-20T23:35:03.634344" elapsed="0.410123"/>
</kw>
<return>
<value>${tools_connection}</value>
<status status="PASS" start="2026-10-20T23:35:04.044541" elapsed="0.000063"/>
</return>
<msg time="2026-10-20T23:35:04.044793" level="INFO">${mininet_conn_id} = 53</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-10-20T23:35:03.632213" elapsed="0.412605"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-20T23:35:04.045880" level="INFO">${mininet_conn_id} = 53</msg>
<arg>${mininet_conn_id}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-20T23:35:04.045332" elapsed="0.000590"/>
</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-10-20T23:35:04.046395" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:35:04.046014" elapsed="0.000434"/>
</branch>
<status status="PASS" start="2026-10-20T23:35:04.045988" elapsed="0.000488"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:35:04.046995" level="INFO">Start mininet --topo tree,1 to 10.30.170.223</msg>
<arg>Start mininet ${options} to ${controller}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:35:04.046695" elapsed="0.000359"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-20T23:35:04.049835" level="INFO">sudo mn --controller 'remote,ip=10.30.170.223,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-10-20T23:35:04.047261" elapsed="0.002640"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-10-20T23:35:04.212568" 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-10-20T23:35:04.050067" elapsed="0.162812"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:35:04.214134" 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-10-20T23:35:04.213587" elapsed="0.000594"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-20T23:35:04.216590" 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-10-20T23:35:04.214424" elapsed="0.002218"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-10-20T23:35:04.225358" level="INFO">107600c3-66af-48f0-9450-39adc6e35b8d
    Bridge s1
        Controller "tcp:10.30.170.223:6633"
        Controller "ptcp:6654"
        fail_mode: secure
        Port s1-eth1
            Interface s1-eth1
        Port s1-eth2
            Interface s1-eth2
        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-10-20T23:35:04.216805" elapsed="0.008619"/>
</kw>
<return>
<value>${mininet_conn_id}</value>
<status status="PASS" start="2026-10-20T23:35:04.225487" elapsed="0.000074"/>
</return>
<msg time="2026-10-20T23:35:04.225779" level="INFO">${mininet_conn_id} = 53</msg>
<var>${mininet_conn_id}</var>
<doc>Start Mininet with custom topology and connect to controller.</doc>
<status status="PASS" start="2026-10-20T23:35:01.567897" elapsed="2.657907"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-20T23:35:04.226421" level="INFO">${mininet_conn_id} = 53</msg>
<arg>${mininet_conn_id}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-20T23:35:04.226022" elapsed="0.000439"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:35:04.227009" level="INFO">Creating Session using : alias=session, url=http://10.30.170.223:8181, headers={'Content-Type': 'application/xml'},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x756a97f30510&gt;, timeout=None, proxies=None, verify=False,                     debug=0 </msg>
<arg>session</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>headers=${HEADERS_XML}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-10-20T23:35:04.226660" elapsed="0.000605"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:35:04.234123" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:35:04.234185" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:35:04.234482" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:35:04.228483" elapsed="0.006699">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:35:04.235506" elapsed="0.000022"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:04.235852" elapsed="0.000021"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${switches}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:04.236044" elapsed="0.000019"/>
</kw>
<arg>1</arg>
<doc>Check switches are in the topology.</doc>
<status status="FAIL" start="2026-10-20T23:35:04.228124" elapsed="0.008049">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:35:05.245552" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:35:05.245705" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:35:05.245994" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:35:05.238249" elapsed="0.008866">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:35:05.247918" elapsed="0.000057"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:05.248482" elapsed="0.000050"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${switches}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:05.248981" elapsed="0.000054"/>
</kw>
<arg>1</arg>
<doc>Check switches are in the topology.</doc>
<status status="FAIL" start="2026-10-20T23:35:05.237280" elapsed="0.012006">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:35:06.259098" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:35:06.259234" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:35:06.259582" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:35:06.251467" elapsed="0.009156">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:35:06.261278" elapsed="0.000101"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:06.261767" elapsed="0.000042"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${switches}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:06.262182" elapsed="0.000041"/>
</kw>
<arg>1</arg>
<doc>Check switches are in the topology.</doc>
<status status="FAIL" start="2026-10-20T23:35:06.250558" elapsed="0.011914">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:35:07.270934" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:35:07.271069" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:35:07.271520" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:35:07.264501" elapsed="0.008051">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:35:07.273221" elapsed="0.000049"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:07.273716" elapsed="0.000044"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${switches}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:07.274132" elapsed="0.000043"/>
</kw>
<arg>1</arg>
<doc>Check switches are in the topology.</doc>
<status status="FAIL" start="2026-10-20T23:35:07.263655" elapsed="0.010773">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:35:08.283035" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:35:08.283169" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:35:08.283471" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:35:08.276502" elapsed="0.008014">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:35:08.285173" elapsed="0.000048"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:08.285664" elapsed="0.000045"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${switches}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:08.286081" elapsed="0.000041"/>
</kw>
<arg>1</arg>
<doc>Check switches are in the topology.</doc>
<status status="FAIL" start="2026-10-20T23:35:08.275653" elapsed="0.010703">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:35:09.295199" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:35:09.295379" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:35:09.295651" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:35:09.288370" elapsed="0.008322">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:35:09.297375" elapsed="0.000067"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:09.297833" elapsed="0.000044"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${switches}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:09.298245" elapsed="0.000042"/>
</kw>
<arg>1</arg>
<doc>Check switches are in the topology.</doc>
<status status="FAIL" start="2026-10-20T23:35:09.287558" elapsed="0.010987">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:35:10.307417" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:35:10.307776" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:35:10.308073" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:35:10.300950" elapsed="0.008218">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:35:10.310117" elapsed="0.000054"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:10.310625" elapsed="0.000046"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${switches}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:10.311055" elapsed="0.000043"/>
</kw>
<arg>1</arg>
<doc>Check switches are in the topology.</doc>
<status status="FAIL" start="2026-10-20T23:35:10.299871" elapsed="0.011490">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:35:11.320865" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:35:11.321003" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:35:11.321277" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:35:11.314165" elapsed="0.008109">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:35:11.322990" elapsed="0.000050"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:11.323482" elapsed="0.000046"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${switches}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:11.323903" elapsed="0.000042"/>
</kw>
<arg>1</arg>
<doc>Check switches are in the topology.</doc>
<status status="FAIL" start="2026-10-20T23:35:11.312487" elapsed="0.011674">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:35:12.333126" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:35:12.333253" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:35:12.333560" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:35:12.325985" elapsed="0.008740">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:35:12.335388" elapsed="0.000051"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:12.335848" elapsed="0.000047"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${switches}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:12.336403" elapsed="0.000046"/>
</kw>
<arg>1</arg>
<doc>Check switches are in the topology.</doc>
<status status="FAIL" start="2026-10-20T23:35:12.325167" elapsed="0.011512">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:35:13.344769" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:35:13.344894" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:35:13.345119" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:35:13.338436" elapsed="0.007608">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:35:13.346703" elapsed="0.000051"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:13.347141" elapsed="0.000043"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${switches}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:13.347600" elapsed="0.000044"/>
</kw>
<arg>1</arg>
<doc>Check switches are in the topology.</doc>
<status status="FAIL" start="2026-10-20T23:35:13.337681" elapsed="0.010163">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:35:14.356158" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:35:14.356294" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:35:14.356615" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:35:14.349473" elapsed="0.008147">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:35:14.358260" elapsed="0.000084"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:14.358786" elapsed="0.000046"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${switches}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:14.359209" elapsed="0.000042"/>
</kw>
<arg>1</arg>
<doc>Check switches are in the topology.</doc>
<status status="FAIL" start="2026-10-20T23:35:14.348749" elapsed="0.010741">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<msg time="2026-10-20T23:35:14.359730" level="FAIL">Keyword 'FlowLib.Check Switches In Topology' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</msg>
<arg>10s</arg>
<arg>1s</arg>
<arg>FlowLib.Check Switches In Topology</arg>
<arg>1</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-10-20T23:35:04.227490" elapsed="10.132440">Keyword 'FlowLib.Check Switches In Topology' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<doc>Starts mininet and verify if topology is in operational datastore.</doc>
<status status="FAIL" start="2026-10-20T23:35:01.567521" elapsed="12.792619">Keyword 'FlowLib.Check Switches In Topology' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<test id="s1-s9-t1" name="Add Flow And Check It Is In Operational DS" line="24">
<doc>Add flow match IP and Ethertype IP</doc>
<status status="FAIL" start="2026-10-20T23:35:14.360290" elapsed="0.001573">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Topology' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</test>
<test id="s1-s9-t2" name="Update Flow With Invalid Match And Check It Is Not In Operational DS" line="38">
<doc>Update flow removing Ethertype, this should remove flow from switch and operational DS</doc>
<status status="FAIL" start="2026-10-20T23:35:14.362505" elapsed="0.001431">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Topology' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</test>
<kw name="Final Phase" type="TEARDOWN">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:35:14.373939" level="INFO">DELETE Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes 
 path_url=/rests/data/opendaylight-inventory:nodes 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:35:14.374037" level="INFO">DELETE Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes 
 status=404, reason=Not Found 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-10-20T23:35:14.374264" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes</msg>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:35:14.369187" elapsed="0.005865">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes</status>
</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 errorw.</doc>
<status status="PASS" start="2026-10-20T23:35:14.367629" elapsed="0.007578"/>
</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-10-20T23:35:14.380569" elapsed="0.000273"/>
</kw>
<status status="PASS" start="2026-10-20T23:35:14.379990" elapsed="0.000930"/>
</branch>
<status status="PASS" start="2026-10-20T23:35:14.379946" elapsed="0.001030"/>
</if>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-20T23:35:14.384207" 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-10-20T23:35:14.381342" elapsed="0.003057"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-10-20T23:35:14.533075" level="INFO">*** Stopping 1 controllers
c0 
*** Stopping 2 links
..
*** Stopping 1 switches
s1 
*** Stopping 2 hosts
h1 h2 
*** Done
completed in 10.416 seconds
[?2004h[jenkins@releng-34016-79-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-10-20T23:35:14.384829" elapsed="0.148309"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:35:14.533333" elapsed="0.000150"/>
</kw>
<arg>${mininet_conn_id}</arg>
<doc>Stops Mininet and exits session ${mininet_conn}</doc>
<status status="PASS" start="2026-10-20T23:35:14.379554" elapsed="0.154000"/>
</kw>
<kw name="Delete All Sessions" owner="RequestsLibrary">
<msg time="2026-10-20T23:35:14.533765" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects </doc>
<status status="PASS" start="2026-10-20T23:35:14.533697" elapsed="0.000123"/>
</kw>
<doc>Stops mininet.</doc>
<status status="PASS" start="2026-10-20T23:35:14.367018" elapsed="0.166849"/>
</kw>
<doc>Test suite for bug 6917 validation.</doc>
<status status="FAIL" start="2026-10-20T23:35:01.542396" elapsed="12.991498">Suite setup failed:
Keyword 'FlowLib.Check Switches In Topology' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</suite>
<suite id="s1-s10" name="7349" source="/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Bug_Validation/7349.robot">
<kw name="Initialization Phase" type="SETUP">
<kw name="Start Mininet Single Controller" owner="MininetKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:35:14.560627" 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-10-20T23:35:14.560342" elapsed="0.000347"/>
</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 or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:14.562873" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:35:14.562508" elapsed="0.000422"/>
</branch>
<status status="PASS" start="2026-10-20T23:35:14.562485" elapsed="0.000471"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:35:14.563326" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-10-20T23:35:14.563153" elapsed="0.000301"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:35:14.563990" level="INFO">Attempting to execute command "sudo mn -c" on remote system "10.30.170.219" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:35:14.563683" elapsed="0.000349"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:35:14.564562" level="INFO">${conn_id} = 54</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-20T23:35:14.564215" elapsed="0.000374"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-20T23:35:14.565626" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:35:14.565697" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-20T23:35:14.565337" elapsed="0.000458"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:35:14.565963" elapsed="0.000307"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:35:14.567104" level="INFO">Logging into '10.30.170.219:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:35:14.939834" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Tue Oct 20 23:34:35 UTC 2026

  System load:  0.03               Processes:             107
  Usage of /:   19.8% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.219
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

5 updates can be applied immediately.
To see these additional updates run: apt list --upgradable

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


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


Last login: Tue Oct 20 23:35:03 2026 from 10.30.170.114
[?2004h[jenkins@releng-34016-79-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-10-20T23:35:14.566856" elapsed="0.373118"/>
</kw>
<msg time="2026-10-20T23:35:14.940053" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:35:14.566457" elapsed="0.373676"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-10-20T23:35:14.564788" elapsed="0.375447"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:35:14.940784" level="INFO">Executing command 'sudo mn -c'.</msg>
<msg time="2026-10-20T23:35:16.128515" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:35:16.128911" level="INFO">${stdout} = </msg>
<msg time="2026-10-20T23:35:16.129004" 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-10-20T23:35:14.940540" elapsed="1.188520"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:35:16.129624" elapsed="0.000508"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:35:16.131383" 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-10-20T23:35:16.130747" elapsed="0.000754"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:35:16.131937" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:35:16.131687" elapsed="0.000357"/>
</branch>
<status status="PASS" start="2026-10-20T23:35:16.131637" elapsed="0.000460"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-10-20T23:35:16.132427" elapsed="0.000066"/>
</return>
<status status="PASS" start="2026-10-20T23:35:16.132207" elapsed="0.000357"/>
</branch>
<status status="PASS" start="2026-10-20T23:35:16.132176" elapsed="0.000466"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:35:16.132716" 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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:35:16.134440" elapsed="0.000672"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-20T23:35:16.135559" elapsed="0.000350"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:35:16.136225" 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-10-20T23:35:16.133422" elapsed="0.003143"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-10-20T23:35:14.562112" elapsed="1.574637"/>
</kw>
<msg time="2026-10-20T23:35:16.136857" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:35:14.561564" elapsed="1.575400"/>
</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-10-20T23:35:14.561164" elapsed="1.576061"/>
</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 or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:16.141158" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:35:16.140556" elapsed="0.000722"/>
</branch>
<status status="PASS" start="2026-10-20T23:35:16.140516" elapsed="0.000845"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:35:16.142119" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-10-20T23:35:16.141837" elapsed="0.000843"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:35:16.143818" 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.219" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:35:16.143112" elapsed="0.000803"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:35:16.145450" level="INFO">${conn_id} = 56</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-20T23:35:16.144335" elapsed="0.001171"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-20T23:35:16.147260" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:35:16.147452" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-20T23:35:16.146699" elapsed="0.000803"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:35:16.147861" elapsed="0.000678"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:35:16.150352" level="INFO">Logging into '10.30.170.219:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:35:16.544795" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Tue Oct 20 23:34:35 UTC 2026

  System load:  0.03               Processes:             107
  Usage of /:   19.8% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.219
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

5 updates can be applied immediately.
To see these additional updates run: apt list --upgradable

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


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


Last login: Tue Oct 20 23:35:14 2026 from 10.30.170.114
[?2004h[jenkins@releng-34016-79-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-10-20T23:35:16.149810" elapsed="0.395151"/>
</kw>
<msg time="2026-10-20T23:35:16.545049" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:35:16.148933" elapsed="0.396202"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-10-20T23:35:16.145971" elapsed="0.399280"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:35:16.545854" 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-10-20T23:35:16.578662" level="INFO">Command exited with return code -1.</msg>
<msg time="2026-10-20T23:35:16.578818" level="INFO">${stdout} = </msg>
<msg time="2026-10-20T23:35:16.578874" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:35:16.545600" elapsed="0.033305"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:35:16.579142" elapsed="0.000311"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:35:16.580528" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:35:16.579876" 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-10-20T23:35:16.581073" elapsed="0.000049"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:35:16.580812" elapsed="0.000393"/>
</branch>
<status status="PASS" start="2026-10-20T23:35:16.580760" 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-10-20T23:35:16.581636" elapsed="0.000058"/>
</return>
<status status="PASS" start="2026-10-20T23:35:16.581414" elapsed="0.000352"/>
</branch>
<status status="PASS" start="2026-10-20T23:35:16.581377" elapsed="0.000439"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:35:16.581886" elapsed="0.000029"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:35:16.583527" elapsed="0.000700"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-20T23:35:16.584858" elapsed="0.000337"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:35:16.585575" elapsed="0.000234"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-10-20T23:35:16.582648" elapsed="0.003272"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-10-20T23:35:16.139710" elapsed="0.446370"/>
</kw>
<msg time="2026-10-20T23:35:16.586190" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:35:16.138483" elapsed="0.447814"/>
</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-10-20T23:35:16.137632" elapsed="0.448879"/>
</kw>
<arg>${mininet}</arg>
<status status="PASS" start="2026-10-20T23:35:14.560893" elapsed="2.025766"/>
</kw>
<kw name="Open_Connection_To_Tools_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:35:16.592049" level="INFO">${tools_connection} = 58</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-10-20T23:35:16.591271" elapsed="0.000835"/>
</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-10-20T23:35:16.595687" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:35:16.595862" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-20T23:35:16.595048" elapsed="0.000864"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:35:16.596252" elapsed="0.000755"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:35:16.598934" level="INFO">Logging into '10.30.170.219:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:35:17.030479" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Tue Oct 20 23:34:35 UTC 2026

  System load:  0.03               Processes:             107
  Usage of /:   19.8% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.219
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

5 updates can be applied immediately.
To see these additional updates run: apt list --upgradable

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


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


Last login: Tue Oct 20 23:35:16 2026 from 10.30.170.114
[?2004h[jenkins@releng-34016-79-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-10-20T23:35:16.598359" elapsed="0.432275"/>
</kw>
<msg time="2026-10-20T23:35:17.030713" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:35:16.597429" elapsed="0.433359"/>
</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-10-20T23:35:16.594114" elapsed="0.436780"/>
</kw>
<msg time="2026-10-20T23:35:17.030944" 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-10-20T23:35:16.593207" elapsed="0.437780"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-10-20T23:35:16.592518" elapsed="0.438538"/>
</kw>
<return>
<value>${tools_connection}</value>
<status status="PASS" start="2026-10-20T23:35:17.031110" elapsed="0.000042"/>
</return>
<msg time="2026-10-20T23:35:17.031321" level="INFO">${mininet_conn_id} = 58</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-10-20T23:35:16.590296" elapsed="0.441052"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-20T23:35:17.032138" level="INFO">${mininet_conn_id} = 58</msg>
<arg>${mininet_conn_id}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-20T23:35:17.031720" elapsed="0.000457"/>
</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-10-20T23:35:17.032620" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:35:17.032260" elapsed="0.000412"/>
</branch>
<status status="PASS" start="2026-10-20T23:35:17.032235" elapsed="0.000462"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:35:17.033165" level="INFO">Start mininet --topo tree,1 to 10.30.170.223</msg>
<arg>Start mininet ${options} to ${controller}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:35:17.032903" elapsed="0.000303"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-20T23:35:17.035856" level="INFO">sudo mn --controller 'remote,ip=10.30.170.223,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-10-20T23:35:17.033390" elapsed="0.002578"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-10-20T23:35:17.255555" 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-10-20T23:35:17.036127" elapsed="0.219552"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:35:17.256321" 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-10-20T23:35:17.256002" elapsed="0.000365"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-20T23:35:17.258066" 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-10-20T23:35:17.256530" elapsed="0.001587"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-10-20T23:35:17.266587" level="INFO">107600c3-66af-48f0-9450-39adc6e35b8d
    Bridge s1
        Controller "ptcp:6654"
        Controller "tcp:10.30.170.223:6633"
        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-10-20T23:35:17.258276" elapsed="0.008480"/>
</kw>
<return>
<value>${mininet_conn_id}</value>
<status status="PASS" start="2026-10-20T23:35:17.266865" elapsed="0.000080"/>
</return>
<msg time="2026-10-20T23:35:17.267236" level="INFO">${mininet_conn_id} = 58</msg>
<var>${mininet_conn_id}</var>
<doc>Start Mininet with custom topology and connect to controller.</doc>
<status status="PASS" start="2026-10-20T23:35:14.559512" elapsed="2.707777"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-20T23:35:17.268519" level="INFO">${mininet_conn_id} = 58</msg>
<arg>${mininet_conn_id}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-20T23:35:17.267794" elapsed="0.000837"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:35:17.269641" level="INFO">Creating Session using : alias=session, url=http://10.30.170.223:8181, headers={'Content-Type': 'application/xml'},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x756aa4dd98d0&gt;, timeout=None, proxies=None, verify=False,                     debug=0 </msg>
<arg>session</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>headers=${HEADERS_XML}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-10-20T23:35:17.269025" elapsed="0.001427"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:35:17.280116" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:35:17.280229" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:35:17.280505" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:35:17.272815" elapsed="0.008668">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:35:17.282096" elapsed="0.000049"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:17.282564" elapsed="0.000065"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${switches}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:17.283006" elapsed="0.000042"/>
</kw>
<arg>1</arg>
<doc>Check switches are in the topology.</doc>
<status status="FAIL" start="2026-10-20T23:35:17.272097" elapsed="0.011156">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:35:18.291171" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:35:18.291374" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:35:18.291772" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:35:18.285022" elapsed="0.007717">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:35:18.293426" elapsed="0.000057"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:18.293907" elapsed="0.000045"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${switches}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:18.294384" elapsed="0.000051"/>
</kw>
<arg>1</arg>
<doc>Check switches are in the topology.</doc>
<status status="FAIL" start="2026-10-20T23:35:18.284207" elapsed="0.010464">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:35:19.302611" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:35:19.302772" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:35:19.303014" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:35:19.296397" elapsed="0.007566">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:35:19.304612" elapsed="0.000073"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:19.305117" elapsed="0.000046"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${switches}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:19.305577" elapsed="0.000043"/>
</kw>
<arg>1</arg>
<doc>Check switches are in the topology.</doc>
<status status="FAIL" start="2026-10-20T23:35:19.295603" elapsed="0.010243">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:35:20.315054" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:35:20.315191" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:35:20.315489" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:35:20.307563" elapsed="0.008962">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:35:20.317226" elapsed="0.000056"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:20.317731" elapsed="0.000045"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${switches}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:20.318175" elapsed="0.000050"/>
</kw>
<arg>1</arg>
<doc>Check switches are in the topology.</doc>
<status status="FAIL" start="2026-10-20T23:35:20.306790" elapsed="0.011671">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:35:21.325268" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:35:21.325413" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:35:21.325543" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:35:21.321300" elapsed="0.004709">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:35:21.326320" elapsed="0.000023"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:21.326519" elapsed="0.000019"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${switches}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:21.326706" elapsed="0.000035"/>
</kw>
<arg>1</arg>
<doc>Check switches are in the topology.</doc>
<status status="FAIL" start="2026-10-20T23:35:21.319086" elapsed="0.007760">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:35:22.335211" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:35:22.335386" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:35:22.335623" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:35:22.328553" elapsed="0.008057">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:35:22.337276" elapsed="0.000083"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:22.337790" elapsed="0.000051"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${switches}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:22.338243" elapsed="0.000047"/>
</kw>
<arg>1</arg>
<doc>Check switches are in the topology.</doc>
<status status="FAIL" start="2026-10-20T23:35:22.327795" elapsed="0.010740">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:35:23.346067" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:35:23.346191" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:35:23.346467" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:35:23.340289" elapsed="0.007100">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:35:23.348020" elapsed="0.000050"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:23.348492" elapsed="0.000044"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${switches}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:23.349026" elapsed="0.000044"/>
</kw>
<arg>1</arg>
<doc>Check switches are in the topology.</doc>
<status status="FAIL" start="2026-10-20T23:35:23.339546" elapsed="0.009718">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:35:24.357139" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:35:24.357261" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:35:24.357521" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:35:24.351281" elapsed="0.007206">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:35:24.359100" elapsed="0.000049"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:24.359568" elapsed="0.000045"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${switches}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:24.360013" elapsed="0.000043"/>
</kw>
<arg>1</arg>
<doc>Check switches are in the topology.</doc>
<status status="FAIL" start="2026-10-20T23:35:24.350529" elapsed="0.009723">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:35:25.368612" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:35:25.368743" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:35:25.369009" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:35:25.362010" elapsed="0.007966">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:35:25.370656" elapsed="0.000055"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:25.371134" elapsed="0.000046"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${switches}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:25.371633" elapsed="0.000046"/>
</kw>
<arg>1</arg>
<doc>Check switches are in the topology.</doc>
<status status="FAIL" start="2026-10-20T23:35:25.361223" elapsed="0.010687">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:35:26.379550" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:35:26.379675" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:35:26.380015" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:35:26.373599" elapsed="0.007334">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:35:26.381578" elapsed="0.000051"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:26.382051" elapsed="0.000045"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${switches}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:26.382504" elapsed="0.000044"/>
</kw>
<arg>1</arg>
<doc>Check switches are in the topology.</doc>
<status status="FAIL" start="2026-10-20T23:35:26.372839" elapsed="0.009907">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:35:27.390672" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:35:27.390794" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:35:27.391037" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:35:27.384688" elapsed="0.007263">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:35:27.392570" elapsed="0.000050"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:27.393039" elapsed="0.000045"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${switches}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:27.393489" elapsed="0.000044"/>
</kw>
<arg>1</arg>
<doc>Check switches are in the topology.</doc>
<status status="FAIL" start="2026-10-20T23:35:27.383978" elapsed="0.009750">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<msg time="2026-10-20T23:35:27.393948" level="FAIL">Keyword 'FlowLib.Check Switches In Topology' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</msg>
<arg>10s</arg>
<arg>1s</arg>
<arg>FlowLib.Check Switches In Topology</arg>
<arg>1</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-10-20T23:35:17.270900" elapsed="10.123273">Keyword 'FlowLib.Check Switches In Topology' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<doc>Starts mininet and verify if topology is in operational datastore.</doc>
<status status="FAIL" start="2026-10-20T23:35:14.559067" elapsed="12.835361">Keyword 'FlowLib.Check Switches In Topology' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<test id="s1-s10-t1" name="Add Flow And Check It Is In Operational DS" line="24">
<doc>Add flow match IP and Ethertype IP</doc>
<status status="FAIL" start="2026-10-20T23:35:27.394576" elapsed="0.001799">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Topology' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</test>
<test id="s1-s10-t2" name="Delete and Add Flow Same Match With Different ID" line="38">
<doc>Delete flow and add flow with same body and different ID. New ID should be shown in operational.</doc>
<status status="FAIL" start="2026-10-20T23:35:27.396778" elapsed="0.000997">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Topology' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</test>
<kw name="Final Phase" type="TEARDOWN">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:35:27.405133" level="INFO">DELETE Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes 
 path_url=/rests/data/opendaylight-inventory:nodes 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:35:27.405240" level="INFO">DELETE Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes 
 status=404, reason=Not Found 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-10-20T23:35:27.405509" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes</msg>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:35:27.400106" elapsed="0.006181">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes</status>
</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 errorw.</doc>
<status status="PASS" start="2026-10-20T23:35:27.399204" elapsed="0.007361"/>
</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-10-20T23:35:27.411655" elapsed="0.000320"/>
</kw>
<status status="PASS" start="2026-10-20T23:35:27.411100" elapsed="0.000955"/>
</branch>
<status status="PASS" start="2026-10-20T23:35:27.411055" elapsed="0.001059"/>
</if>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-20T23:35:27.415135" 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-10-20T23:35:27.412488" elapsed="0.002762"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-10-20T23:35:27.553930" level="INFO">*** Stopping 1 controllers
c0 
*** Stopping 2 links
..
*** Stopping 1 switches
s1 
*** Stopping 2 hosts
h1 h2 
*** Done
completed in 10.441 seconds
[?2004h[jenkins@releng-34016-79-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-10-20T23:35:27.415703" elapsed="0.138335"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:35:27.554245" elapsed="0.000186"/>
</kw>
<arg>${mininet_conn_id}</arg>
<doc>Stops Mininet and exits session ${mininet_conn}</doc>
<status status="PASS" start="2026-10-20T23:35:27.410617" elapsed="0.143874"/>
</kw>
<kw name="Delete All Sessions" owner="RequestsLibrary">
<msg time="2026-10-20T23:35:27.554705" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects </doc>
<status status="PASS" start="2026-10-20T23:35:27.554638" elapsed="0.000126"/>
</kw>
<doc>Stops mininet.</doc>
<status status="PASS" start="2026-10-20T23:35:27.398632" elapsed="0.156179"/>
</kw>
<doc>Test suite for bug 6917 validation.</doc>
<status status="FAIL" start="2026-10-20T23:35:14.534429" elapsed="13.020413">Suite setup failed:
Keyword 'FlowLib.Check Switches In Topology' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</suite>
<suite id="s1-s11" name="8723" source="/w/workspace/openflowplugin-csit-1node-flow-services-all-manganese/test/csit/suites/openflowplugin/Bug_Validation/8723.robot">
<kw name="Initialization Phase" type="SETUP">
<kw name="Start Mininet Single Controller" owner="MininetKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:35:27.580912" 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-10-20T23:35:27.580663" elapsed="0.000295"/>
</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 or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:27.583022" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:35:27.582718" elapsed="0.000359"/>
</branch>
<status status="PASS" start="2026-10-20T23:35:27.582690" elapsed="0.000413"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:35:27.583457" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-10-20T23:35:27.583300" elapsed="0.000281"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:35:27.584079" level="INFO">Attempting to execute command "sudo mn -c" on remote system "10.30.170.219" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:35:27.583769" elapsed="0.000352"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:35:27.584626" level="INFO">${conn_id} = 59</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-20T23:35:27.584302" elapsed="0.000348"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-20T23:35:27.585439" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:35:27.585509" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-20T23:35:27.585159" 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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:35:27.585680" elapsed="0.000497"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:35:27.586984" level="INFO">Logging into '10.30.170.219:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:35:27.961913" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Tue Oct 20 23:34:35 UTC 2026

  System load:  0.03               Processes:             107
  Usage of /:   19.8% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.219
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

5 updates can be applied immediately.
To see these additional updates run: apt list --upgradable

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


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


Last login: Tue Oct 20 23:35:16 2026 from 10.30.170.114
[?2004h[jenkins@releng-34016-79-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-10-20T23:35:27.586730" elapsed="0.375341"/>
</kw>
<msg time="2026-10-20T23:35:27.962239" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:35:27.586360" elapsed="0.375973"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-10-20T23:35:27.584846" elapsed="0.377596"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:35:27.962978" level="INFO">Executing command 'sudo mn -c'.</msg>
<msg time="2026-10-20T23:35:29.182262" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-10-20T23:35:29.183742" level="INFO">${stdout} = </msg>
<msg time="2026-10-20T23:35:29.184160" 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-10-20T23:35:27.962740" elapsed="1.221492"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:35:29.184859" elapsed="0.000843"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:35:29.187087" 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-10-20T23:35:29.186360" elapsed="0.000854"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:35:29.187700" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:35:29.187425" elapsed="0.000395"/>
</branch>
<status status="PASS" start="2026-10-20T23:35:29.187366" 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-10-20T23:35:29.188205" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-10-20T23:35:29.188010" elapsed="0.000371"/>
</branch>
<status status="PASS" start="2026-10-20T23:35:29.187976" elapsed="0.000457"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:35:29.188509" 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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:35:29.190245" elapsed="0.000744"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-20T23:35:29.191443" elapsed="0.000361"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:35:29.192176" 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-10-20T23:35:29.189253" elapsed="0.003292"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-10-20T23:35:27.582338" elapsed="1.610375"/>
</kw>
<msg time="2026-10-20T23:35:29.192825" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:35:27.581785" elapsed="1.611179"/>
</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-10-20T23:35:27.581421" elapsed="1.611794"/>
</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 or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:29.197348" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:35:29.196728" elapsed="0.000743"/>
</branch>
<status status="PASS" start="2026-10-20T23:35:29.196687" elapsed="0.000836"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:35:29.198289" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-10-20T23:35:29.197984" elapsed="0.000610"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:35:29.199743" 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.219" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:35:29.199049" elapsed="0.000792"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:35:29.201514" 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-10-20T23:35:29.200745" elapsed="0.000829"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-10-20T23:35:29.204012" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:35:29.204243" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-20T23:35:29.203356" elapsed="0.000996"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:35:29.204763" elapsed="0.000785"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:35:29.207556" level="INFO">Logging into '10.30.170.219:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:35:29.570529" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Tue Oct 20 23:34:35 UTC 2026

  System load:  0.03               Processes:             107
  Usage of /:   19.8% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.219
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

5 updates can be applied immediately.
To see these additional updates run: apt list --upgradable

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


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


Last login: Tue Oct 20 23:35:27 2026 from 10.30.170.114
[?2004h[jenkins@releng-34016-79-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-10-20T23:35:29.206960" elapsed="0.363749"/>
</kw>
<msg time="2026-10-20T23:35:29.570795" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:35:29.205981" elapsed="0.364904"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-10-20T23:35:29.202117" elapsed="0.368902"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-10-20T23:35:29.571596" 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-10-20T23:35:29.603876" level="INFO">Command exited with return code -1.</msg>
<msg time="2026-10-20T23:35:29.604195" level="INFO">${stdout} = </msg>
<msg time="2026-10-20T23:35:29.604356" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-10-20T23:35:29.571342" elapsed="0.033078"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:35:29.604846" elapsed="0.000599"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:35:29.606759" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:35:29.606102" elapsed="0.000754"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:35:29.607362" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:35:29.607058" elapsed="0.000427"/>
</branch>
<status status="PASS" start="2026-10-20T23:35:29.607003" 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-10-20T23:35:29.607862" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-10-20T23:35:29.607659" elapsed="0.000393"/>
</branch>
<status status="PASS" start="2026-10-20T23:35:29.607625" elapsed="0.000492"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-10-20T23:35:29.608232" 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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:35:29.609990" elapsed="0.000860"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-10-20T23:35:29.611476" elapsed="0.000385"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:35:29.612274" 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-10-20T23:35:29.609054" elapsed="0.003590"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-10-20T23:35:29.195823" elapsed="0.416983"/>
</kw>
<msg time="2026-10-20T23:35:29.612914" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:35:29.194558" elapsed="0.418521"/>
</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-10-20T23:35:29.193651" elapsed="0.419614"/>
</kw>
<arg>${mininet}</arg>
<status status="PASS" start="2026-10-20T23:35:27.581142" elapsed="2.032281"/>
</kw>
<kw name="Open_Connection_To_Tools_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-10-20T23:35:29.618601" level="INFO">${tools_connection} = 63</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-10-20T23:35:29.617869" elapsed="0.000788"/>
</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-10-20T23:35:29.622820" level="INFO">Length is 0.</msg>
<msg time="2026-10-20T23:35:29.623018" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-10-20T23:35:29.621764" elapsed="0.001313"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:35:29.623476" elapsed="0.000693"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-10-20T23:35:29.626023" level="INFO">Logging into '10.30.170.219:22' as 'jenkins'.</msg>
<msg time="2026-10-20T23:35:30.002726" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-187-generic x86_64)

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

 System information as of Tue Oct 20 23:34:35 UTC 2026

  System load:  0.03               Processes:             107
  Usage of /:   19.8% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.219
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

5 updates can be applied immediately.
To see these additional updates run: apt list --upgradable

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


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


Last login: Tue Oct 20 23:35:29 2026 from 10.30.170.114
[?2004h[jenkins@releng-34016-79-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-10-20T23:35:29.625481" elapsed="0.377383"/>
</kw>
<msg time="2026-10-20T23:35:30.002953" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:35:29.624593" elapsed="0.378437"/>
</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-10-20T23:35:29.620823" elapsed="0.382306"/>
</kw>
<msg time="2026-10-20T23:35:30.003179" 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-10-20T23:35:29.619880" elapsed="0.383343"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-10-20T23:35:29.619058" elapsed="0.384235"/>
</kw>
<return>
<value>${tools_connection}</value>
<status status="PASS" start="2026-10-20T23:35:30.003362" elapsed="0.000048"/>
</return>
<msg time="2026-10-20T23:35:30.003559" level="INFO">${mininet_conn_id} = 63</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-10-20T23:35:29.616918" elapsed="0.386666"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-20T23:35:30.004321" level="INFO">${mininet_conn_id} = 63</msg>
<arg>${mininet_conn_id}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-20T23:35:30.003895" elapsed="0.000466"/>
</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-10-20T23:35:30.004763" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:35:30.004442" elapsed="0.000371"/>
</branch>
<status status="PASS" start="2026-10-20T23:35:30.004418" elapsed="0.000420"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:35:30.005347" level="INFO">Start mininet --topo tree,1 to 10.30.170.223</msg>
<arg>Start mininet ${options} to ${controller}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:35:30.005067" elapsed="0.000323"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-20T23:35:30.008009" level="INFO">sudo mn --controller 'remote,ip=10.30.170.223,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-10-20T23:35:30.005556" elapsed="0.002506"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-10-20T23:35:30.213271" 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-10-20T23:35:30.008224" elapsed="0.205126"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:35:30.213837" 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-10-20T23:35:30.213591" elapsed="0.000288"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-20T23:35:30.217156" 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-10-20T23:35:30.214053" elapsed="0.003154"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-10-20T23:35:30.225917" level="INFO">107600c3-66af-48f0-9450-39adc6e35b8d
    Bridge s1
        Controller "tcp:10.30.170.223:6633"
        Controller "ptcp:6654"
        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-10-20T23:35:30.217378" elapsed="0.008624"/>
</kw>
<return>
<value>${mininet_conn_id}</value>
<status status="PASS" start="2026-10-20T23:35:30.226047" elapsed="0.000031"/>
</return>
<msg time="2026-10-20T23:35:30.226255" level="INFO">${mininet_conn_id} = 63</msg>
<var>${mininet_conn_id}</var>
<doc>Start Mininet with custom topology and connect to controller.</doc>
<status status="PASS" start="2026-10-20T23:35:27.580146" elapsed="2.646134"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-20T23:35:30.226781" level="INFO">${mininet_conn_id} = 63</msg>
<arg>${mininet_conn_id}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-20T23:35:30.226492" elapsed="0.000327"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:35:30.227302" level="INFO">Creating Session using : alias=session, url=http://10.30.170.223:8181, headers={'Content-Type': 'application/xml'},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x756aa57f1910&gt;, timeout=None, proxies=None, verify=False,                     debug=0 </msg>
<arg>session</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>headers=${HEADERS_XML}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-10-20T23:35:30.227010" elapsed="0.000492"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:35:30.233874" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:35:30.233931" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:35:30.234082" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:35:30.228548" elapsed="0.006029">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:35:30.234831" elapsed="0.000022"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:30.235042" elapsed="0.000019"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${switches}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:30.235234" elapsed="0.000019"/>
</kw>
<arg>1</arg>
<doc>Check switches are in the topology.</doc>
<status status="FAIL" start="2026-10-20T23:35:30.228255" elapsed="0.007114">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:35:31.244155" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:35:31.244290" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:35:31.244593" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:35:31.237761" elapsed="0.007809">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:35:31.246219" elapsed="0.000051"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:31.246692" elapsed="0.000044"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${switches}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:31.247146" elapsed="0.000044"/>
</kw>
<arg>1</arg>
<doc>Check switches are in the topology.</doc>
<status status="FAIL" start="2026-10-20T23:35:31.236297" elapsed="0.011133">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:35:32.255114" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:35:32.255387" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:35:32.255630" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:35:32.249150" elapsed="0.007458">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:35:32.257245" elapsed="0.000050"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:32.257728" elapsed="0.000044"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${switches}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:32.258174" elapsed="0.000044"/>
</kw>
<arg>1</arg>
<doc>Check switches are in the topology.</doc>
<status status="FAIL" start="2026-10-20T23:35:32.248394" elapsed="0.010060">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:35:33.266430" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:35:33.266555" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:35:33.266777" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:35:33.260191" elapsed="0.007509">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:35:33.268370" elapsed="0.000051"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:33.268811" elapsed="0.000043"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${switches}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:33.269244" elapsed="0.000043"/>
</kw>
<arg>1</arg>
<doc>Check switches are in the topology.</doc>
<status status="FAIL" start="2026-10-20T23:35:33.259454" elapsed="0.010061">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:35:34.277244" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:35:34.277414" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:35:34.277631" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:35:34.271190" elapsed="0.007360">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:35:34.279164" elapsed="0.000050"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:34.279631" elapsed="0.000043"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${switches}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:34.280166" elapsed="0.000044"/>
</kw>
<arg>1</arg>
<doc>Check switches are in the topology.</doc>
<status status="FAIL" start="2026-10-20T23:35:34.270478" elapsed="0.009959">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:35:35.286202" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:35:35.286266" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:35:35.286402" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:35:35.281784" elapsed="0.005073">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:35:35.287171" elapsed="0.000023"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:35.287384" elapsed="0.000020"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${switches}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:35.287570" elapsed="0.000018"/>
</kw>
<arg>1</arg>
<doc>Check switches are in the topology.</doc>
<status status="FAIL" start="2026-10-20T23:35:35.281298" elapsed="0.006381">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:35:36.295391" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:35:36.295519" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:35:36.295740" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:35:36.289349" elapsed="0.007327">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:35:36.297296" elapsed="0.000078"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:36.297764" elapsed="0.000042"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${switches}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:36.298262" elapsed="0.000071"/>
</kw>
<arg>1</arg>
<doc>Check switches are in the topology.</doc>
<status status="FAIL" start="2026-10-20T23:35:36.288591" elapsed="0.009946">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:35:37.306398" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:35:37.306550" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:35:37.306863" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:35:37.300206" elapsed="0.007575">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:35:37.308451" elapsed="0.000053"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:37.308891" elapsed="0.000044"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${switches}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:37.309354" elapsed="0.000045"/>
</kw>
<arg>1</arg>
<doc>Check switches are in the topology.</doc>
<status status="FAIL" start="2026-10-20T23:35:37.299501" elapsed="0.010095">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:35:38.317601" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:35:38.317726" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:35:38.317949" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:35:38.311243" elapsed="0.007639">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:35:38.319543" elapsed="0.000049"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:38.319980" elapsed="0.000043"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${switches}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:38.320441" elapsed="0.000044"/>
</kw>
<arg>1</arg>
<doc>Check switches are in the topology.</doc>
<status status="FAIL" start="2026-10-20T23:35:38.310569" elapsed="0.010105">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:35:39.328579" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:35:39.328704" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:35:39.328922" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:35:39.322366" elapsed="0.007519">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:35:39.330554" elapsed="0.000051"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:39.330993" elapsed="0.000051"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${switches}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:39.331459" elapsed="0.000043"/>
</kw>
<arg>1</arg>
<doc>Check switches are in the topology.</doc>
<status status="FAIL" start="2026-10-20T23:35:39.321630" elapsed="0.010069">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<kw name="Check Switches In Topology" owner="FlowLib">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:35:40.340435" level="INFO">GET Request : url=http://10.30.170.223: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:35:40.340658" level="INFO">GET Response : url=http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '407'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/rests/data/network-topology:network-topology&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:35:40.340894" level="FAIL">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</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="FAIL" start="2026-10-20T23:35:40.334051" elapsed="0.007778">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<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-10-20T23:35:40.342472" elapsed="0.000050"/>
</kw>
<kw name="Get Count" owner="BuiltIn">
<var>${count}</var>
<arg>${resp.text}</arg>
<arg>"node-id":"openflow:</arg>
<doc>Returns and logs how many times the `item` is found from the `container`.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:40.342942" elapsed="0.000046"/>
</kw>
<kw name="Should Be Equal As Numbers" owner="BuiltIn">
<arg>${count}</arg>
<arg>${switches}</arg>
<doc>Fails if objects are unequal after converting them to real numbers.</doc>
<status status="NOT RUN" start="2026-10-20T23:35:40.343425" elapsed="0.000058"/>
</kw>
<arg>1</arg>
<doc>Check switches are in the topology.</doc>
<status status="FAIL" start="2026-10-20T23:35:40.333395" elapsed="0.010332">Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<msg time="2026-10-20T23:35:40.343913" level="FAIL">Keyword 'FlowLib.Check Switches In Topology' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</msg>
<arg>10s</arg>
<arg>1s</arg>
<arg>FlowLib.Check Switches In Topology</arg>
<arg>1</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-10-20T23:35:30.227689" elapsed="10.116415">Keyword 'FlowLib.Check Switches In Topology' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<doc>Starts mininet and verify if topology is in operational datastore.</doc>
<status status="FAIL" start="2026-10-20T23:35:27.579764" elapsed="12.764601">Keyword 'FlowLib.Check Switches In Topology' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</kw>
<test id="s1-s11-t1" name="Create Two Active Switch Connections To Controller And Check OVS Connections" line="25">
<doc>Make a second connection from switch s1 to a controller</doc>
<status status="FAIL" start="2026-10-20T23:35:40.344514" elapsed="0.000882">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Topology' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</test>
<test id="s1-s11-t2" name="Restore original Connection To Controller And Check OVS Connection" line="36">
<doc>Restore original Connection To Controller And Check OVS Connection</doc>
<status status="FAIL" start="2026-10-20T23:35:40.345781" elapsed="0.000941">Parent suite setup failed:
Keyword 'FlowLib.Check Switches In Topology' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</test>
<kw name="Final Phase" type="TEARDOWN">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:35:40.356267" level="INFO">DELETE Request : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes 
 path_url=/rests/data/opendaylight-inventory:nodes 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:35:40.356425" level="INFO">DELETE Response : url=http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes 
 status=404, reason=Not Found 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-10-20T23:35:40.356663" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes</msg>
<arg>session</arg>
<arg>url=${RFC8040_NODES_API}</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-10-20T23:35:40.349808" elapsed="0.007659">HTTPError: 404 Client Error: Not Found for url: http://10.30.170.223:8181/rests/data/opendaylight-inventory:nodes</status>
</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 errorw.</doc>
<status status="PASS" start="2026-10-20T23:35:40.348898" elapsed="0.008720"/>
</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-10-20T23:35:40.362252" elapsed="0.000300"/>
</kw>
<status status="PASS" start="2026-10-20T23:35:40.361722" elapsed="0.000906"/>
</branch>
<status status="PASS" start="2026-10-20T23:35:40.361676" elapsed="0.001008"/>
</if>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-10-20T23:35:40.365934" 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-10-20T23:35:40.363036" elapsed="0.003012"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-10-20T23:35:40.473173" level="INFO">*** Stopping 1 controllers
c0 
*** Stopping 2 links
..
*** Stopping 1 switches
s1 
*** Stopping 2 hosts
h1 h2 
*** Done
completed in 10.395 seconds
[?2004h[jenkins@releng-34016-79-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-10-20T23:35:40.366448" elapsed="0.106803"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-10-20T23:35:40.473427" elapsed="0.000145"/>
</kw>
<arg>${mininet_conn_id}</arg>
<doc>Stops Mininet and exits session ${mininet_conn}</doc>
<status status="PASS" start="2026-10-20T23:35:40.361202" elapsed="0.112422"/>
</kw>
<kw name="Delete All Sessions" owner="RequestsLibrary">
<msg time="2026-10-20T23:35:40.473832" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects </doc>
<status status="PASS" start="2026-10-20T23:35:40.473766" elapsed="0.000189"/>
</kw>
<doc>Stops mininet.</doc>
<status status="PASS" start="2026-10-20T23:35:40.348349" elapsed="0.125655"/>
</kw>
<doc>Test suite for Split connection bug.</doc>
<status status="FAIL" start="2026-10-20T23:35:27.555524" elapsed="12.918510">Suite setup failed:
Keyword 'FlowLib.Check Switches In Topology' failed after retrying for 10 seconds. The last error was: Url: http://10.30.170.223:8181/rests/data/network-topology:network-topology?content=nonconfig Expected status: 404 != 200</status>
</suite>
<status status="FAIL" start="2026-10-20T23:11:07.657342" elapsed="1472.818364"/>
</suite>
<statistics>
<total>
<stat pass="5" fail="407" skip="0">All Tests</stat>
</total>
<tag>
<stat pass="0" fail="1" skip="0">all</stat>
<stat pass="0" fail="1" skip="0">controller</stat>
<stat pass="0" fail="1" skip="0">flood</stat>
<stat pass="0" fail="1" skip="0">https://bugs.opendaylight.org/show_bug.cgi?id=6595</stat>
<stat pass="0" fail="1" skip="0">inport</stat>
<stat pass="0" fail="1" skip="0">local</stat>
<stat pass="0" fail="1" skip="0">normal</stat>
<stat pass="0" fail="1" skip="0">switch_qualification</stat>
<stat pass="0" fail="1" skip="0">table</stat>
</tag>
<suite>
<stat name="openflowplugin-flow-services.txt" id="s1" pass="5" fail="407" skip="0">openflowplugin-flow-services.txt</stat>
<stat name="MD SAL NSF OF10" id="s1-s1" pass="0" fail="21" skip="0">openflowplugin-flow-services.txt.MD SAL NSF OF10</stat>
<stat name="010 Restconf Inventory" id="s1-s1-s1" pass="0" fail="7" skip="0">openflowplugin-flow-services.txt.MD SAL NSF OF10.010 Restconf Inventory</stat>
<stat name="020 Restconf Topology" id="s1-s1-s2" pass="0" fail="4" skip="0">openflowplugin-flow-services.txt.MD SAL NSF OF10.020 Restconf Topology</stat>
<stat name="030 Restconf Statistics" id="s1-s1-s3" pass="0" fail="4" skip="0">openflowplugin-flow-services.txt.MD SAL NSF OF10.030 Restconf Statistics</stat>
<stat name="040 Restconf Frm" id="s1-s1-s4" pass="0" fail="6" skip="0">openflowplugin-flow-services.txt.MD SAL NSF OF10.040 Restconf Frm</stat>
<stat name="MD SAL NSF OF13" id="s1-s2" pass="0" fail="24" skip="0">openflowplugin-flow-services.txt.MD SAL NSF OF13</stat>
<stat name="010 Restconf Inventory" id="s1-s2-s1" pass="0" fail="7" skip="0">openflowplugin-flow-services.txt.MD SAL NSF OF13.010 Restconf Inventory</stat>
<stat name="020 Restconf Topology" id="s1-s2-s2" pass="0" fail="4" skip="0">openflowplugin-flow-services.txt.MD SAL NSF OF13.020 Restconf Topology</stat>
<stat name="030 Restconf Statistics" id="s1-s2-s3" pass="0" fail="4" skip="0">openflowplugin-flow-services.txt.MD SAL NSF OF13.030 Restconf Statistics</stat>
<stat name="040 Restconf Frm" id="s1-s2-s4" pass="0" fail="9" skip="0">openflowplugin-flow-services.txt.MD SAL NSF OF13.040 Restconf Frm</stat>
<stat name="Stat Manager extended" id="s1-s3" pass="0" fail="326" skip="0">openflowplugin-flow-services.txt.Stat Manager extended</stat>
<stat name="010 SM add upd del flows" id="s1-s3-s1" pass="0" fail="174" skip="0">openflowplugin-flow-services.txt.Stat Manager extended.010 SM add upd del flows</stat>
<stat name="020 SM sal add upd del flows" id="s1-s3-s2" pass="0" fail="152" skip="0">openflowplugin-flow-services.txt.Stat Manager extended.020 SM sal add upd del flows</stat>
<stat name="Switch Qualification" id="s1-s4" pass="0" fail="8" skip="0">openflowplugin-flow-services.txt.Switch Qualification</stat>
<stat name="010 OpenFlow Connection" id="s1-s4-s1" pass="0" fail="1" skip="0">openflowplugin-flow-services.txt.Switch Qualification.010 OpenFlow Connection</stat>
<stat name="020 OpenFlow Actions" id="s1-s4-s2" pass="0" fail="7" skip="0">openflowplugin-flow-services.txt.Switch Qualification.020 OpenFlow Actions</stat>
<stat name="Reconciliation" id="s1-s5" pass="4" fail="19" skip="0">openflowplugin-flow-services.txt.Reconciliation</stat>
<stat name="010 Group Flows" id="s1-s5-s1" pass="4" fail="19" skip="0">openflowplugin-flow-services.txt.Reconciliation.010 Group Flows</stat>
<stat name="2429" id="s1-s6" pass="1" fail="0" skip="0">openflowplugin-flow-services.txt.2429</stat>
<stat name="6917" id="s1-s7" pass="0" fail="2" skip="0">openflowplugin-flow-services.txt.6917</stat>
<stat name="7258" id="s1-s8" pass="0" fail="1" skip="0">openflowplugin-flow-services.txt.7258</stat>
<stat name="7335" id="s1-s9" pass="0" fail="2" skip="0">openflowplugin-flow-services.txt.7335</stat>
<stat name="7349" id="s1-s10" pass="0" fail="2" skip="0">openflowplugin-flow-services.txt.7349</stat>
<stat name="8723" id="s1-s11" pass="0" fail="2" skip="0">openflowplugin-flow-services.txt.8723</stat>
</suite>
</statistics>
<errors>
</errors>
</robot>
